Je débute sur le grand Symfony, mais cela fait deux jours que je suis naufragé et que je tente une navigation complexe ( et sans radeaux de sauvetage) dans les méandre de google : e rencontre un problème avec le driver de Postgre SQL.
Voila mon problème, quand je lance mon serveur ce message d'erreur apparait et je ne parviens pas à trouver le driver :
PS C:\xampp\htdocs\test_project> symfony serve:start
Tailing Web Server log file (C:\Users\Fabrice\.symfony\log\f071fa4c74c14bfb85e608f2bdce716909178c1b.log)
Tailing PHP-CGI log file (C:\Users\Fabrice\.symfony\log\f071fa4c74c14bfb85e608f2bdce716909178c1b\79ca75f9e90b4126a5955a33ea6a41ec5e854698.log)
[OK] Web server listening
The Web server is using PHP CGI 8.0.9
https://127.0.0.1:8000
[Application] Aug 16 11:38:07 |CRITICA| REQUES Exception thrown when handling an exception (Doctrine\DBAL\Exception\DriverException: An exception occurred in driver: could not find driver at C:\xampp\htdocs\test_project\vendor\doct
rine\dbal\lib\Doctrine\DBAL\Driver\AbstractPostgreSQLDriver.php line 102)
[Application] Aug 16 11:38:07 |CRITICA| PHP Uncaught Exception: An exception occurred in driver: could not find driver
[Application] Aug 16 11:38:13 |INFO | REQUES Matched route "bonjour". method="GET" request_uri="http://127.0.0.1:8000/bonjour" route="bonjour" route_parameters={"_controller":"App\\Controller\\BonjourController::index","_route":"
bonjour"}
[Application] Aug 16 11:38:13 |DEBUG | SECURI Checking for authenticator support. authenticators=0 firewall_name="main"
[Application] Aug 16 11:38:13 |CRITICA| REQUES Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred in driver: could not find driver" at C:\xampp\htdocs\test_project\vendor\doctrine\dbal\lib\Doctri
ne\DBAL\Driver\AbstractPostgreSQLDriver.php line 102
[Application] Aug 16 11:38:14 |CRITICA| REQUES Exception thrown when handling an exception (Doctrine\DBAL\Exception\DriverException: An exception occurred in driver: could not find driver at C:\xampp\htdocs\test_project\vendor\doct
rine\dbal\lib\Doctrine\DBAL\Driver\AbstractPostgreSQLDriver.php line 102)
|ETC]
J'ai tenté tout un ensemble de solutions sans succès :
- Activer l'extension dans le fichier php.ini en la décommentant → extension=pdo_pgsql - Faire attention que PHP le bon fichier de configuration php.ini - Vérifier que Symfony utilise le bon fichier php.ini → avec la commande symfony check:requirements - Réinstaller tout PHP / Composer / Xamp / CL Symfony, j'ai même remis Windows à 0 pour partir d'une configuration propre. j'avais tellement testé dans tous les sens que j'avais mis en branle mon serveur local.
- poser un cierge à la chapelle d'open classrooms, on ne sais jamais, je veux croire au miracle !
Je ne sais plus vraiment quoi tenter. J'ai même soupçonné un problème sur la version de postgre sql, mais cela n'a rien donner.
Si vous venez m'aider, d'avance, vraiment merci beaucoup. Je bloque depuis maintenant 2 jours sur le sujet.
Cordialement Fab !
- Edité par fabricetoupet1 16 août 2021 à 19:27:22
Je ne connais pas assez le binaire symfony, donc je ne suis pas forcément pertinent, mais as-tu aussi vu cette partie de la documentation ?
Autre point : tu as installé XAMPP, qui est un serveur local, pourquoi vouloir utiliser un autre encore ? En gros, tu as installé une centrale nucléaire et tu veux utiliser la dynamo de ton vélo…
Merci beaucoup Ymox, lottie14 et Monkey 3D, désolé de n'avoir pu répondre hier, mais je voulais être certain de bien prendre le temps de les tester chacune de vos solutions Et j'ai eu de quoi tester hier pendant un long moments, avec quelques doutes et beaucoup de questions
Ymox, j'ai bien regardé dans ta proposition et j'ai testé avec des versions différentes de PHP : le problème reste le même et cela me retourne toujours la même exception : driver not found. Au passage je me suis remis en question sur l'utilisation de Xampp. Tu as raison j'utilisais peut être une usine à Gaz ... Je le conçoit ^^' . J'ai alors réinstaller mon environnement sur wamp project en faisant bien attention de bien paramétrer le PHP.ini. J'ai toujours ce même problème de driver non trouvé.
Lottie, merci beaucoup pour ton idée pertinente ! Cela m'a permis de mieux comprendre le paramétrage de pgsql. En revanche lorsque je tente de créer ma base doctrine (d'après le liens que tu m'as cité) , le message d'erreur suivant remonte :
PS C:\wamp64\www\Test_project> symfony console doctrine:database:create
In AbstractPostgreSQLDriver.php line 102:
An exception occurred in driver: could not find driver
In Exception.php line 18:
could not find driver
In PDOConnection.php line 39:
could not find driver
doctrine:database:create [-s|--shard SHARD] [-c|--connection [CONNECTION]] [--if-not-exists]
C'est comme si il manquait un driver , je pense que la console ne peut pas être plus explicite.
Monkey 3D, je teste ca dans la matinée.
Je viens vers vous dès que j'ai des nouvelles et encore Merci !
Le souci n'était pas que tu utilisais XAMPP en soi, mais que tu installes une pile serveur (XAMPP, WAMP, AMPPS, Laragon, MAMP, EasyPHP, tout ça sont quelques unes des piles serveur que je connais) et que tu utilises ensuite encore un autre serveur avec le binaire Symfony… Tu pourrais n'avoir que ce dernier et le moteur de bases de données que tu souhaites — d'ailleurs, est-ce bien PostgreSQL que tu souhaites utiliser ? — ou simplement utiliser Apache fourni avec /(W|X)AMPP?/, ça me paraîtrait plus logique.
Note que si PHP te dit que tu n'as pas le bon driver, c'est que tu n'as pas modifié le bon endroit pour la configuration. Après, je t'avoue qu'avoir une pile serveur avec des configurations qui sont déjà différentes selon la ligne de commandes et Apache et en plus un serveur qui gère sa configuration de manière autonome, je comprends qu'il y ait de quoi se perdre.
Juste pour information, afin de ne pas avoir de problème avec PHP, je ne garde à chaque fois qu'un seul serveur et je désinstalle les autres afin de ne pas avoir des fichier en double . Aussi je ré-instale composer afin de le faire pointer vers le bon fichier PHP.
Tu n'as pas qu'un seul serveur si tu as conservé WAMP et que tu utilises symfony serve:start, justement : tu as Apache de WAMP et tu as le serveur lancé par la commande, qui lui est une feature de PHP depuis je-ne-sais-plus quelle version.
Merci à tous de votre aide, j'ai enfin trouver la solution grâce à l'aide d'un ami :
La raison de ce problème viens de composant qui manquaient de Symfony et non d'un problème de paramétrage. Pour se faire il faut ajouter ORM pack de Symfony depuis composer avec la commande suivante :
Bien entendu, ajouter les paramètres de votre base de donnée.
Enfin, j'ai construit ma base depuis la console Symfony :
symfony console doctrine:database:create
Si jamais ca ne fonctionne pas, tenter de configurer la base depuis le fichier de configuration doctrinte.yaml avec la configuration suivante. Bien entendu, adapter les identifiants à votre base :
Surprenant comme erreur si c'était bien ça le problème… parce que là, la dernière possibilité que tu donnes configure la DBAL (et c'est d'ailleurs à ce niveau que la connexion est configurée par défaut, d'où le dbal première ligne du dernier code), donc je ne comprends pas comment la couche ORM peut régler le souci de driver pas trouvé.
Après, je vois que tu es passé sur MySQL, j'aimerais relever que j'avais demandé si c'était bien PostgreSQL que tu souhaitais utiliser, je n'ai pas eu de réponse jusqu'à aujourd'hui.
De lancer PostgreSQL en titre on passe à une base mysql en fin de fil ! Tiens tiens quel était donc la raison initiale d'utiliser PostgreSQL ?
Et il me semble que l'ORM et le système de base de données sont 2 niveaux bien différents ... et c'est tout l'intérêt de l'ORM de découpler du type de base de données.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Je ferme ce sujet. En cas de désaccord, me contacter par MP.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
"Commencer est facile, persévérer est un art."
Pas d'aide concernant le code par MP, le forum est là pour ça :)