Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Erreur FormErrorNormalizer en prod


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : mars 2003
    Messages : 29
    Points : 18
    Points
    18
    Par défaut Erreur FormErrorNormalizer en prod
    Bonjour à tous,

    J'essaie de passer le site développer sur mon PC sur un hébergement en ligne (o2switch).
    J'ai donc mis à jour le fichier .env, assigné les deux valeurs :
    APP_ENV=prod
    APP_DEBUG=0

    J'ai exécuter les commandes :
    composer install --no-dev --optimize-autoloader
    php bin/console cache:clear

    J'ai essayé avec le cache et en supprimant le cache et j'ai toujours le message d'erreur suivant et je ne sais plus quoi faire :

    <b>Fatal error</b>: During class fetch: Uncaught ReflectionException: Class Symfony\Component\Serializer\Normalizer\NormalizerInterface not found in /home/xxxx/vendor/friendsofsymfony/rest-bundle/Serializer/Normalizer/FormErrorNormalizer.php:22
    Stack trace:
    #0 /home/xxxx/vendor/composer/ClassLoader.php(444): include('/home/xxxx/...')
    #1 /home/xxxx/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/home/xxxx/...')
    #2 [internal function]: Composer\Autoload\ClassLoader-&gt;loadClass('FOS\\RestBundle\\...')
    #3 [internal function]: spl_autoload_call('FOS\\RestBundle\\...')
    #4 /home/xxxx/vendor/symfony/config/Resource/ClassExistenceResource.php(76): class_exists('FOS\\RestBundle\\...')
    #5 /home/xxxx/vendor/symfony/dependency-injection/ContainerBuilder.php(351): Symfony\Component\Config\Resource\ClassExistenceResource-&gt;isFresh(0)
    #6 /home/xxxx/vendor/symfony/dependency-injection/Compiler/ in <b>/home/xxxx/vendor/friendsofsymfony/rest-bundle/Serializer/Normalizer/FormErrorNormalizer.php</b> on line <b>22</b><br />
    J'ai la même erreur avec un :
    composer install

    Merci d'avance car là je suis complètement perdu.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2011
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2011
    Messages : 254
    Points : 427
    Points
    427
    Par défaut
    Salut,

    A priori ça pourrait venir de PHP : https://github.com/symfony/symfony/issues/32395

    Quelle est la version exacte de PHP utilisée sur ton serveur ?
    Est-ce que tu peux/sais changer la version de PHP ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : mars 2003
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Salut,

    Merci pour la réponse.
    J'ai la version 7.3.7 de PHP et avec la version 7.2.20 j'ai une erreur 500 sans aucun message d'erreur

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2011
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2011
    Messages : 254
    Points : 427
    Points
    427
    Par défaut
    A priori le problème concerne les versions 7.2.20 et 7.3.7.

    Les solutions proposées ici (https://github.com/symfony/symfony/i...ment-512781215) sont au choix :
    - utiliser une version mineure antérieur (7.2.19, 7.3.6) en attendant les versions corrigées (7.2.21, 7.3.8)
    - compiler la version RC manuellement
    - utiliser la solution temporaire décrite ici https://github.com/symfony/symfony/i...ment-509726046

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2012
    Messages : 533
    Points : 935
    Points
    935
    Par défaut
    bonjour,

    le message d'erreur reportée montre que fosRestBundle ne trouve pas la dépendance symfony/serializer. Cette dernière se trouve probablement dans les dépendances de dev raison pour laquelle elle est absente dans l'autoloader( prod) générée à la suite de la commande composer install --no-dev --optimize-autoloader.

    si jamais la lib symfony/serializer est dans la section require-dev du composer fait la monter dans la section require, laisse APP_ENV à dev, supprime le dossier vendor et refait composer install.

    si t'as toujours la même erreur, réinstalle le serializer composer symfony/serializer.

    J'ai exécuter les commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    composer install --no-dev --optimize-autoloader
    Cette commande génère un nouveau autoloader( vendor/composer/autoload_psr4.php) propre à la prod et seront exclus dans cet autoloader toutes les dépendances déclarée dans require-dev du composer. Ainsi en mode prod, cette commande va ignorer le fichier .env et va t'afficher une erreur liée à la dépendance symfony/dotenv. En prod, Syfmony recommande de déclarer les variables d'environnement contenus dans le fichier .env comme variables d'environnement utilisateur ou système ou comme variables environnement apache ou nginx.
    Pour lancer cette commande sans configurer de variables d'environnement : APP_ENV=prod composer install --no-dev --optimize-autoloader.en général on se met en prod une fois que ton appli fonctionne en mode dev.

    Quant à l'erreur 500 elle est liée au serveur web.jette un coup d'oeil dans les logs de ton serveur.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : mars 2003
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    J'ai regardé et je n'avais pas la dépendance symfony/serializer ni en dev ni en prod. Je l'ai donc installé et j'ai maintenant un nouveau message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <br />
    <b>Fatal error</b>:  During class fetch: Uncaught ReflectionException: Class Symfony\Component\Form\FormTypeGuesserInterface not found in /home/xxxx/vendor/symfony/doctrine-bridge/Form/DoctrineOrmTypeGuesser.php:25
    Stack trace:
    #0 /home/xxxx/vendor/composer/ClassLoader.php(444): include('/home/xxxx/...')
    #1 /home/xxxx/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/home/xxxx/...')
    #2 [internal function]: Composer\Autoload\ClassLoader-&gt;loadClass('Symfony\\Bridge\\...')
    #3 [internal function]: spl_autoload_call('Symfony\\Bridge\\...')
    #4 /home/xxxx/vendor/symfony/config/Resource/ClassExistenceResource.php(76): class_exists('Symfony\\Bridge\\...')
    #5 /home/xxxx/vendor/symfony/dependency-injection/ContainerBuilder.php(351): Symfony\Component\Config\Resource\ClassExistenceResource-&gt;isFresh(0)
    #6 /home/xxxx/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(330): Symfony\ in <b>/home/xxxx/vendor/symfony/doctrine-bridge/Form/DoctrineOrmTypeGuesser.php</b> on line <b>25</b><br />
    Ce qui est bizarre c'est quand local ça marche sans cette dépendance avec un PHP 7.3.1. Du coup je pense qu'il y a vraiment un pb avec les versions de PHP chez O2Switch et je vais devoir attendre une mise à jour malheureusement

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2012
    Messages : 533
    Points : 935
    Points
    935
    Par défaut
    quelle est la version de PHP en mode console? php -vtu peux poster ton composer.json ?

Discussions similaires

  1. [2.x] [2.8] Erreur 404 -env-prod / double app.php dans adresse
    Par Symfo dans le forum Symfony
    Réponses: 1
    Dernier message: 08/08/2017, 09h23
  2. Erreur 500 en Prod
    Par mitsukk1992 dans le forum Symfony
    Réponses: 3
    Dernier message: 17/01/2017, 10h09
  3. [1.x] page erreur 500 en prod
    Par zoreol dans le forum Symfony
    Réponses: 3
    Dernier message: 17/10/2011, 12h23
  4. Réponses: 3
    Dernier message: 23/05/2007, 09h43
  5. Réponses: 4
    Dernier message: 30/08/2006, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo