8

Ich erstelle ein neues Projekt in Symfony 2.1. Ich wollte überprüfen, ob meine Anwendung korrekt auf meinem Server läuft, also kopierte ich alle Dateien, löschte Cache und setzte Berechtigungen. lokal in allem dev Umgebung ist in Ordnung, aber wenn ich bitten „Online - prod“ Version auf meinem Server bekomme ich einen Fehler:Symfony2 - Klasse nicht in Prod-Umgebung gefunden

Fatal error: Class 'Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle' not found in /www/gastlich_www/www/livescore.gastlich.iq.pl/app/AppKernel.php on line 25 

ich einige Informationen zu diesem Problem gefunden, aber alle von ihnen bezieht sich auf sich ändernde Namespace von Symfony \ Bundle zu Doctrine \ Bundle und Symfony 2.0.

Also habe ich meine AppKernel.php-Datei überprüft, und mein Bundle-Pfad war korrekt.

Mein composer.json wie folgt aussieht:

{ 
"name": "symfony/framework-standard-edition", 
"description": "The \"Symfony Standard Edition\" distribution", 
"autoload": { 
    "psr-0": { "": "src/" } 
}, 
"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.1.*", 
    "doctrine/orm": ">=2.2.3,<2.4-dev", 
    "doctrine/doctrine-bundle": "1.0.*", 
    "twig/extensions": "1.0.*", 
    "symfony/assetic-bundle": "2.1.*", 
    "symfony/swiftmailer-bundle": "2.1.*", 
    "symfony/monolog-bundle": "2.1.*", 
    "sensio/distribution-bundle": "2.1.*", 
    "sensio/framework-extra-bundle": "2.1.*", 
    "sensio/generator-bundle": "2.1.*", 
    "jms/security-extra-bundle": "1.2.*", 
    "jms/di-extra-bundle": "1.1.*", 
    "stof/doctrine-extensions-bundle": "dev-master", 
    "doctrine/doctrine-fixtures-bundle": "dev-master" 
}, 
"scripts": { 
    "post-install-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ], 
    "post-update-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ] 
}, 
"minimum-stability": "dev", 
"extra": { 
    "symfony-app-dir": "app", 
    "symfony-web-dir": "web" 
} 

}

Und AppKernel.php Konfiguration:

<?php 

use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Config\Loader\LoaderInterface; 

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      new Symfony\Bundle\TwigBundle\TwigBundle(), 
      new Symfony\Bundle\MonologBundle\MonologBundle(), 
      new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
      new Symfony\Bundle\AsseticBundle\AsseticBundle(), 
      new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
      new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
      new JMS\AopBundle\JMSAopBundle(), 
      new JMS\DiExtraBundle\JMSDiExtraBundle($this), 
      new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), 
      new Acme\StoreBundle\AcmeStoreBundle(), 
      new Livescore\StatsBundle\LivescoreStatsBundle(), 
      new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), 
      new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle() 
     ); 

     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(); 
     } 

     return $bundles; 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) 
    { 
     $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); 
    } 
} 

Ich habe versucht, herauszufinden, wo ein Problem ist, so dass ich gelöscht Dieses Paket in AppKernel.php, und ich habe als nächstes einen Fatal Error:

Fatal error: Class 'Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle' not found in /www/gastlich_www/www/livescore.gastlich.iq.pl/app/AppKernel.php on line 24 
So

Ich gehe davon aus, dass ich nur Probleme mit den letzten 2 Bündel haben: StofDoctrineExtensionsBundle und DoctrineFixturesBundle, die dev-Master-Versionen in composer.json haben. Zu diesem Zeitpunkt habe ich keine weitere Idee. Ich habe versucht, dieses Problem zu Google, aber 90% der Probleme war über Symfony 2.0 und Bewegen git-Repository;/

Lokale dev Umgebung: PHP 5.4.6 Mysql 5.5.27 Apache 2.2.22 (Fedora)

Und mein Server env: PHP 5.4.6 MySql 5.0.32

Jede Hilfe geschätzt wird.

Danke!

+0

Ist diese Datei (mit DoctrineFixturesBundle Klasse) physisch existieren? Versuchen Sie run: php composer.phar update, und sehen, ob das Problem immer noch auftritt – Cyprian

+0

Hallo, ich führe compser.phar update und ich habe einige Fehler mit "Quellverzeichnis hat nicht festgeschriebene Änderungen". Also löschte ich diese widersprüchlichen Anbieter und alles lief gut. Script hat keines der Fixtures/stof Bundle aktualisiert. Der nächste Schritt bestand darin, Änderungen an den Online-Server zu kopieren und das gesamte Anwendungsverzeichnis zu kopieren. Nach dem Löschen des Caches läuft meine Anwendung gut auf dem Online-Server und ich weiß nicht, wo das Problem war;/Danke für deine Hilfe und suggeriere :) –

Antwort

-2

app/autoload.php

use Doctrine\Common\Annotations\AnnotationRegistry; 

$loader = require __DIR__.'/../vendor/autoload.php'; 

// intl 
if (!function_exists('intl_get_error_code')) { 
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; 

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); 
} 

$loader->add('Stof\DoctrineExtensionsBundle', __DIR__.'/../vendor/stof/doctrine-extensions-bundle'); 
$loader->add('Gedmo' , __DIR__.'/../vendor/gedmo/doctrine-extensions/lib'); 

AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 
7

Sie müssen auch die Umwelt zu Produktion für die Kommandozeile setzen, bevor die Aktualisierung/Komponist installieren.

Hier vom offiziellen Symfony Dokumentation:

If you get a "class not found" error during this step, you may need to run export SYMFONY_ENV=prod before running this command so that the post-install-cmd scripts run in the prod environment.

+1

Das ist die richtige Antwort, aber es ist eine Schande, dass Composer einfach nicht funktioniert Symfony in der Produktion ... –