IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Symfony 5.1 - PDOConnection could not find driver


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 16
    Points : 20
    Points
    20
    Par défaut Symfony 5.1 - PDOConnection could not find driver
    Bonjour,
    Pratiquant Symfony depuis sa version 2, je n'ai jamais rencontré de problème de création de base via doctrine.
    Aujourd'hui je veux mener cette opération sur l'environnement le plus récent qui soit :
    Windows 10 / Apache 2.4 / Php 7.4 / MySql 8.0.22 / Symfony 5.1.8

    et en passant la commande php bin/console doctrine:database:create, j'obtiens l'erreur :
    In AbstractMySQLDriver.php line 110:
    An exception occurred in driver: could not find driver
    In PDOConnection.php line 31:
    could not find driver
    In PDOConnection.php line 27:
    could not find driver
    Côté environnement,
    - mes serveurs Apache et MySql sont bien démarrés (j'accède à MySql en localhost port 3306 par Phpmyadmin avec user=root / pwd=root)
    - dans php.ini, j'ai bien extension=pdo_mysql et extension=mysqli décommentés, ce que confirment un php -m, ainsi qu'un phpinfo().
    - dans le .env de Symfony, j'ai la ligne DATABASE_URL="mysql://root:root@127.0.0.1:3306/symerp?serverVersion=8.0.22" (sur ce dernier point, j'ai essayé en remplaçant 127.0.0.1 par localhost, sans succès. J'ai aussi essayé avec ou sans " autour de l'url, idem pas de différence)
    - Par sécurité, j'ai rajouté ensuite dans doctrine.yaml :
    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dbal:
            # configure these for your database server
            driver: 'pdo_mysql'
            charset: utf8mb4
            url: '%env(resolve:DATABASE_URL)%'

    Mais ça n'a toujours pas résolu le problème.
    Les dizaines de posts que j'ai pu consulter sur le sujet ont tous comme réponse "vérifiez que l'extension pdo_mysql est activée", ce qui est fait bien sur. Mais in fine, aucun de ces posts n'indique que le problème a été résolu.

    Quelqu'un a-t-il une autre piste ?

    Merci par avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 16
    Points : 20
    Points
    20
    Par défaut Auto réponse à ce problème
    Bonjour,

    Après avoir fouillé les arcanes les plus profondes de PHP, j'ai fini par trouver la solution à ce problème pour le cas où quelqu'un le rencontre.

    La commande php bin/console doctrine:database:create s'exécute en mode CLI de PHP, et non pas à travers l'instance PHP configurée dans le httpd.conf d'Apache.

    Mais il se trouve que la console symfony lancée en CLI ne sait pas localiser toute seule le php.ini si elle n'est pas lancée depuis une fenêtre de commande ouverte depuis le répertoire même où se trouve ce PHP.ini.
    La doc PHP sur les différentes localisations possibles que va parcourir successivement le CLI pour trouver son PHP.ini indique qu'à défaut d'être effectivement dans le répertoire de php, d'avoir mis ce php.ini dans c:\windows ou dans des clés de registres, le seul moyen de l'informer de la localisation précise est de créer une variable d'environnement très précise en plus du PATH classique. Cette variable est PHPRC avec comme paramètre le répertoire de php.ini (juste le répertoire, pas besoin de terminer par php.ini en plus).
    Comme c'est une variable d'environnement système, il faut rebooter pour que ça prenne effet, mais ensuite la console doctrine fonctionne.

    Symfony propose un utilitaire qui m'a permis d'investiguer pour trouver la solution : c'est un petit exe qui permet de mettre à disposition de windows une ligne de commande symfony. Il suffit ensuite d'ouvrir une fenêtre de commande et de taper symfony check:requirements. Le résultat indique non seulement si l'environnement est OK pour utiliser symfony, mais surtout le chemin complet du php.ini analysé.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Dans mon cas c'était autre chose ...
    Il s'agissait du fichier .env (racine du site symfony) :

    il fallait l'éditer pour permettre la connexion à la BDD : ce n'était pas le bon SGBD (par défaut symfony active postgresql ...) au niveau de la ligne 25 => 32 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ###> doctrine/doctrine-bundle ###
    # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
    # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
    #
    # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
    # DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
    DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
    ###< doctrine/doctrine-bundle ###
    J'ai adapté pour mon environnement : et c'est bon ;-P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Schema update could not find driver
    Par guillaume40 dans le forum Doctrine2
    Réponses: 4
    Dernier message: 04/08/2011, 07h57
  2. [PDO] Erreur de connexion : could not find driver
    Par Schnuffel dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/08/2009, 13h23
  3. [PDO] could not find driver
    Par Freygolow dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2008, 13h31
  4. [PDO] Informix : could not find driver
    Par mickael.guilbert dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/09/2007, 16h57
  5. [Oracle] Oracle : could not find driver
    Par Hug0_76 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/02/2007, 13h00

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