Symfony : classe introuvable

Bonjour à tous,

J’ai un souci lors de la mise en ligne de mon projet Symfony qui fonctionne autrement très bien en local. Il semblerait que mon problème provienne d’une classe inaccessible : la classe Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle appelée dans AppKernel.php (l.25). L’erreur apparaît aussi dans la console lorsque j’essaie de mettre à jour le dossier “vendor” en local, avec la commande composer install --no-dev --optimize-autoloader :

Fatal error: Class ‘Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle’ not found in C:\wamp64\www\Archives-Aerelloth\app\AppKernel.php on line 25
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception

La documentation Symfony me suggère dans ce cas d’utiliser la commande “export SYMFONY_ENV=prod” :
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.

Donc j’imagine que cela permettrait de régler le problème, mais je n’arrive pas à l’utiliser cette commande telle quelle depuis la console. Est-ce que quelqu’un saurait comment l’utiliser, ou a déjà été confronté à ce problème ?

Merci d’avance et bonne journée !

Océane

Hello tout le monde,

Petite mise à jour :

Mon souci donc c’est que mon site Symfony fonctionne en local mais pas en ligne. J’ai un hébergement OVH perso et j’ai déployé le site en FTP en suivant la procédure de la documentation. J’ai eu le souci “class not found” qui y est détaillé au point C : installation/mise à jour des vendors, et je l’ai réglé en utilisant la commande SET SYMFONY_ENV=prod avant cette commande (composer install --no-dev --optimize-autoloader). Mais c’est ce même message de “class not found” qui apparaît quand j’accède au fichier app_dev.php en ligne :

ClassNotFoundException in AppKernel.php line 25: Attempted to load class “SensioGeneratorBundle” from namespace “Sensio\Bundle\GeneratorBundle”.
Did you forget a “use” statement for another namespace?

Le fichier app.php lui affiche une page blanche, mais peut afficher un var_dump de test. J’ai installé une web console sur mon hébergement mais elle ne me permet pas d’utiliser composer et la commande de mise à jour des vendors qui semble liée au problème, merci d’avance :slight_smile:

@oceane Tu peux nous partager ton composer.json ?

@Oceane Je pense que ça c’est relatif à ton soucis : http://stackoverflow.com/questions/39948522/symfony-composer-install-uncaught-symfony-component-debug-exception-classnotfo

Merci pour cette réponse !

Effectivement c’est le même problème que le mien. Sauf que j’ai changé les paramètres proposés (dans app/AppKernel.php et composer.json) et que le souci est toujours là…

Voici mon composer.json : https://www.dropbox.com/s/e2jgc9uvvb6to7w/composer.json?dl=1

Donc tu as bien ajouter la ligne suivante dans la partie prod de App/kernel.php :
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); ???

Si oui, je n’ai malheureusement plus trop d’idée

Je viens de trouver comment régler le problème :grinning:

A force de voir Symfony me demander si je n’avais pas oublié d’inclure un namespace quelque part, j’ai cherché un peu dans les autoloads pour voir où ce SensioGeneratorBundle apparaissait, et ça n’était le cas absolument nulle part, y compris dans les vendors… Du coup, j’ai fini par supprimer la ligne de mon AppKernel.php pour voir et hop, magie… ^^
Quelques ajustements de noms de tables (merci Windows) et une suppression de cache plus tard, mon site est bien en ligne et tout fonctionne !

Merci beaucoup pour les suggestions de solutions à tester, je crois que j’aurais abandonné les recherches autrement :wink:

Je t’en prie ! Heureux que ce soit fonctionnel…

Enfaite ton soucis venais de ton fichier composer.json ======> “sensio/generator-bundle”: “~2.3”.

Comme tu n’avais pas le bundle SensioGeneratorBundle tu n’aurais pas du le mettre dans le fichier app/kernel car il ne trouvais pas ta classe.

C’est bien de savoir d’où viens le problème pour le futur =) =).