Problème de connexion à Doctrine

a marqué ce sujet comme résolu.

Bonjour,

je me suis décidé à abandonner PDO provisoirement pour tenter l’expérience Doctrine. Or, j’ai un problème lors de la création de la db avec la commande php bin/console doctrine:database:create :

Aïe...
Aïe...

Pourtant, j’ai bien spécifié DATABASE_URL="mysql://blablabla" dans le fichier .env.

J’utilise Symfony 5.2.6…

Merci pour votre aide.

Salut

Le problème n’est pas un paramétrage invalide dans le .env, mais le fait que ta version de PHP en ligne de commandes n’a pas le module PDO nécessaire (pdo_mysql au vu de ce que tu montres comme exemple) pour se connecter à ta base de données.

+2 -0

Est-ce que tu utilises bien PHP 8.0.3 en ligne de commandes ? Parce qu’une erreur de ce genre, c’est soit que :

  1. le fichier modifié n’est pas le bon (versions différentes de PHP pour Apache et en CLI, mauvais chemin modifié, variable d’environnement inexistante vers le chemin de l’exécutable PHP et donc du fichier de configuration), ce qui revient au message de la FAQ lié précédemment ;
  2. php.ini "corrompu" (mauvaise manipulation lors d’une édition par exemple), voir dans les logs d’erreur de PHP pour WampServer ;
  3. l’interface de lignes de commandes n’a pas été redémarré (dans certains cas les fichiers de configuration ne sont lus qu’une fois au lancement) ;
  4. il faut une autre modification (ici activer aussi php_pdo) ;
  5. bien plus rare : le fichier d’extension est corrompu, ou incompatible avec la version de PHP (extension x64 et PHP en x86 par exemple), ou encore inexistant.

Le fait que l’extension soit activée pour Apache écarte cette dernière possibilité, et la "non-activation" de PDO jetterait plutôt des messages d’erreur par rapport à PDO qui n’existerait pas, ce qui écarte l’avant-dernière.

Est-ce qu’on pourrait voir l’entier de la commande (sans modification s’il te plaît) que tu lances pour avoir cette erreur ?

+0 -0

Re, merci pour ta réponse.

Dans phpinfo(), Loaded Configuration File redirige vers wamp64\bin\apache\apache2.4.46\bin mais les changements effectués n’aboutissent à rien.

J’ai donc modifié les différents php.ini pour toutes les versions de php installées (dans wamp64\bin\php\php[version]) mais cela ne produit aucun résultat concluant.

A chaque modification, je décommente les lignes extension=pdo_[quelque_chose]

Du coup, php.ini serait-il corrompu ? Honnêtement je suis un peu perdu là… :(

Est-ce qu’on pourrait voir l’entier de la commande (sans modification s’il te plaît) que tu lances pour avoir cette erreur ?

Comme indiqué dans le post original, il s’agit de php bin/console doctrine:database:create mais les migrations produisent une erreur similaire. Tout ce qui implique d’utiliser MySQL via Doctrine.

En revanche, les requêtes SQL classiques avec PDO fonctionnent…

+0 -0

Histoire de mettre ici ce qu’il y a dans la FAQ : un phpinfo() "en web" va donner les chemins des fichiers pour le serveur, pas pour la ligne de commandes. Afin de savoir quel fichier modifier, il y a une autre commande à lancer. Tu as bien vérifié cela ?

J’ai demandé la commande complète et non modifiée parce que si tu utilises le chemin explicite de l’exécutable PHP, il n’est pas impossible que le fichier php.ini soit cherché encore ailleurs. Mais le point à vérifier mentionné dans la FAQ et répété dans le paragraphe précédent devrait permettre d’avancer.

Il ne faut pas copier-coller un php.ini ailleurs que dans le répertoire où il se trouve : WampServer se charge de faire ce qu’il lui faut proprement. Déplacer ou créer d’autres copies ailleurs peut poser des problèmes de configuration.

+0 -0

Merci pout ta réponse et ta patience, ce problème me prenait sur les nerfs et j’ai du mal avec les fichiers de configuration et tout ça… ^^

Mais je pense avoir trouvé la solution. J’avais installé PHP en console séparément. C’est cette version qui est utilisée par Symfony, pas celle de Wamp…

Or quand j’exécute symfony check:requirements, j’obtiens :

Du coup, faut-il désinstaller php de mon PC et garder la version wamp ?

+0 -0

Je ne suis pas sûr de comprendre. Tu as une version de PHP qui n’est pas au même endroit que là où se trouve le php.ini d’après ta capture d’écran, et qui serait en plus pas la même version que celle du php.ini (sans compter que ce n’est pas la même version que celle que tu indiques pour Apache, la 8.0.3) ?

Confirme s’il te plaît que :

  • tu n’as pas besoin de mettre le chemin complet de l’exécutable PHP pour lancer une commande (d’où ma dernière demande dans ce précédent message) :
    • si oui, que quand tu fais [le chemin]\php.exe --ini, le chemin du fichier sous « Loaded Configuration File: » correspond à celui de l’exécutable ?
  • quand tu fais php -v tu as bien le numéro 8.0.3 qui s’affiche, si non il faudra modifier la variable d’environnement ou utiliser à chaque fois le chemin complet de l’exécutable.

Actuellement, tu semblerais avoir deux versions différentes de PHP entre Apache et la ligne de commandes. Forcément, ces deux versions n’ont pas les mêmes réglages, ne serait-ce que du fait que ce sont une 5.6 et une 8.0.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte