Meine Symfony-Anwendung hat einige Abhängigkeiten, die nur für Entwicklung, Tests und dergleichen benötigt werden. Diese sind in meinem composer.json
im require-dev
Abschnitt definiert.Warum fehlen Symfony Dev-Bundles in der Prod-Umgebung?
Hier ist, wie ich sie in AppKernel.php
hinzufügen:
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
// ...
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
$bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle();
}
return $bundles;
}
}
Wenn ich meine Anwendung aktualisieren, ich laufe php composer.phar install --no-dev --optimize-autoloader
. Dies installiert alle Anforderungen, die für die Entwicklungsumgebung nicht erforderlich sind, und löscht dann den Cache.
schlägt jedoch fehl, dem Löschen des Cache mit der folgenden Meldung:
Dies ist nicht nur ein Problem mit der Lehre Fixtures Bundle. Wenn ich die Reihenfolge ändere, so dass das Liip Functional Test Bundle zuerst kommt, dann wird der Fehler über dieses Bündel sein.
Warum sehe ich diesen Fehler? Warum versucht Symfony, auf diese Bundles zuzugreifen, obwohl wir uns explizit nicht in der Entwicklungsumgebung befinden (beachten Sie das Composer-Flag --no-dev
)? Und was kann ich tun, um dies zu beseitigen, ohne alle Dev-Abhängigkeiten auf dem Produktionsrechner installieren zu müssen?
Nice! Die Kenntnis dieser kleinen Option hilft mir dabei, meinen Produktionsprozess einfach und sauber zu halten. –