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

Symfony PHP Discussion :

Erreur FormErrorNormalizer en prod


Sujet :

Symfony PHP

  1. ###raw>post.musername###
    Membre à l'essai
    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.
      0  0

  2. #2
    Membre confirmé
    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
    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 confirmé
    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é
    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. ###raw>post.musername###
    Membre à l'essai
    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
      0  0

  7. #7
    Membre éprouvé
    quelle est la version de PHP en mode console? php -v

    tu peux poster ton composer.json ?