8

Voy a crear nuevos proyectos en Symfony 2.1. Quería verificar si mi aplicación funcionará correctamente en mi servidor, así que copié todos los archivos, borré el caché y establecí los permisos. localmente en el entorno dev todo está bien, pero cuando solicito "en línea - prod" versión en mi servidor me sale un error:Symfony2 - Clase que no se encuentra en el entorno 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 

he encontrado alguna información acerca de este problema, pero todos ellos se refiere a la evolución de espacio de nombres de Symfony \ Bundle a Doctrine \ Bundle y Symfony 2.0.

Así que he comprobado mi archivo AppKernel.php, y mi camino bulto era correcta.

Mi composer.json parece:

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

}

Y AppKernel.php configuración:

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

yo estaba tratando de averiguar dónde es un problema, por lo que yo borrado este paquete en AppKernel.php, y tengo al lado un error fatal:

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

así que supongo que tengo único problema con últimos 2 manojos: StofDoctrineExtensionsBundle y DoctrineFixturesBundle, que tiene versiones dev-master en composer.json. En este punto, no tengo más idea. Yo estaba tratando de google este problema, pero el 90% de los problemas estaba a punto de Symfony 2.0 y se mueve repositorio git;/

entorno de desarrollo local: PHP 5.4.6 MySQL 5.5.27 Apache 2.2.22 (Fedora)

Y mi env servidor: PHP 5.4.6 MySQL 5.0.32

se observará ninguna ayuda.

Gracias!

+0

viene este archivo (con la clase DoctrineFixturesBundle) existe físicamente? Pruebe ejecutar: php composer.phar actualización, y vea si el problema todavía ocurre – Cyprian

+0

Hola, ejecuto la actualización compser.phar y tengo algunos errores con "El directorio de origen tiene cambios no confirmados". Así que eliminé estos vendedores en conflicto y todo salió bien. La secuencia de comandos no actualizó ninguno de los accesorios/paquete stof. El siguiente paso fue copiar los cambios en el servidor en línea y copié todo el directorio de la aplicación. Después de borrar la memoria caché, mi solicitud está funcionando bien en el servidor en línea y no sé dónde estaba el problema;/Gracias por su ayuda y sugieren :) –

Respuesta

-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

Es necesario configurar el entorno de producción para la línea de comandos, así antes de actualizar/instalar compositor.

Aquí partir de la documentación oficial de 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

Esa es la respuesta correcta, pero es una pena que Compositor simplemente no funciona con Symfony en producción ... –

Cuestiones relacionadas