8

sto creando un nuovo progetto in Symfony 2.1. Volevo controllare se la mia applicazione andrà correttamente sul mio server, quindi ho copiato tutti i file, cancellato la cache e impostato le autorizzazioni. a livello locale in ambiente dev tutto va bene, ma quando chiedo "in linea - prod" versione sul mio server ho un errore:Symfony2 - Classe non trovata nell'ambiente prod

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

ho trovato alcune informazioni su questo problema, ma tutti loro si riferisce al cambiamento spazio dei nomi da Symfony \ Bundle a Doctrine \ Bundle e Symfony 2.0.

Quindi ho controllato il mio file AppKernel.php e il percorso del pacchetto era corretto.

mio composer.json assomiglia:

{ 
"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" 
} 

}

E AppKernel.php configurazione:

<?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'); 
    } 
} 

stavo cercando di capire dove è un problema, così ho cancellato questo pacchetto in AppKernel.php, e ho ottenuto il prossimo errore irreversibile:

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

Quindi suppongo, che ho solo problema con ultimi 2 fasci: StofDoctrineExtensionsBundle e DoctrineFixturesBundle, che hanno le versioni dev-master in composer.json. A questo punto, non ho più alcuna idea. Stavo cercando di google questo problema, ma il 90% dei problemi stavo Symfony 2.0 e lo spostamento repository git;/

locale ambiente dev: PHP 5.4.6 Mysql 5.5.27 Apache 2.2.22 (Fedora)

E il mio ENV server: PHP 5.4.6 MySql 5.0.32

Qualsiasi aiuto sarà apprezzato.

Grazie!

+0

Questo file (con classe DoctrineFixturesBundle) esistono fisicamente? Prova a eseguire: php compositore.phar aggiornamento, e vedere se il problema si verifica ancora – Cyprian

+0

Ciao, eseguo compser.phar aggiornamento e ho alcuni errori con "La directory di origine ha modifiche senza commit". Così ho cancellato questi venditori in conflitto e tutto è andato bene. Script non ha aggiornato alcun pacchetto di fixture/stof. Il passo successivo è stato quello di copiare le modifiche sul server online e ho copiato l'intera directory dell'applicazione. Dopo aver cancellato la cache, la mia applicazione funziona bene sul server online e non so dove fosse il problema;/Grazie per il tuo aiuto e suggerisco :) –

risposta

-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

È necessario impostare l'ambiente di produzione per la linea di comando, così prima di aggiornare/installare compositore.

qui dal documentazione ufficiale Symfony:

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

Questa è la risposta corretta, ma è un peccato che il Composer non funzioni con Symfony in produzione ... –