J'essaie de me connecter à la base de données PostgreSQL via Laravel afin d'effectuer une migration artisanale php mais ne semble pas être dirigé car il lit le nom de la base de données MySQL.
Voici les commandes de database.php:
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix' => '',
),
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'pgsql' => array(
'driver' => 'pgsql',
'Host' => 'localhost',
'database' => 'postgres',
'username' => 'postgres',
'password' => 'root',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'sqlsrv' => array(
'driver' => 'sqlsrv',
'Host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'prefix' => '',
),
),
Si je supprime les chemins MySQL, je vais obtenir:
[InvalidArgumentException]
Database [mysql] not configured.
php.ini
a été vérifié dans Apache, WAMP (depuis le dossier php) et PostgreSQL. Le extension_dir
est correct, car -> extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"
Les extension=pdo_pgsql.dll
et extension=pgsql.dll
ne sont pas commentés.
Fait l'astuce PATH
dans les 'Variables système' et redémarré. Aucune chance.
Merci du coup de main jusqu'à présent.
Ce sont mes pilotes php_pdo_driver.h
& php_pdo.h
de C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\php\SDK\include\ext\pdo
Information de phpinfo:
PHP version 5.5.12
Compilateur MSVC11 (Visual C++ 2012) Configurez la commande cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci = C:\php-sdk\Oracle\x64\instantclient10\sdk, partagé" "--with-oci8 = C:\php-sdk\Oracle\x64\instantclient10\sdk, partagé" "--with-oci8-11g = C:\php-sdk\Oracle\x64\instantclient11\sdk, partagé" "--enable-object-out-dir = ../obj /" "--enable-com-dotnet = shared" "--with-mcrypt = static" "--disable-static-analyse" "--with-pgo"
Assurez-vous de configurer la clé 'default'
dans app/config/database.php
Pour postgres, ce serait 'default' => 'postgres',
Si vous recevez une erreur [PDOException] could not find driver
, vérifiez si les extensions PHP appropriées sont installées. pdo_pgsql.so
et pgsql.so
doivent être installés et activés. Les instructions sur la façon de procéder varient selon les systèmes d'exploitation.
Pour Windows, les extensions pgsql
devraient être pré-téléchargées avec la distribution officielle PHP. Editez simplement votre php.ini
et décommentez les lignes extension=pdo_pgsql.so
et extension=pgsql.so
De même, dans php.ini
, assurez-vous que extension_dir
est défini sur le répertoire approprié. Il devrait s'agir d'un dossier appelé extensions
ou ext
ou similaire dans votre répertoire d'installation PHP.
Enfin, copiez libpq.dll
de C:\wamp\bin\php\php5.*\
dans C:\wamp\bin\Apache*\bin
et redémarrez tous les services via l'interface WampServer.
Si vous obtenez toujours l'exception, vous devrez peut-être ajouter le répertoire postgres \bin
à votre PATH
:
PATH
.Cela devrait, espérons-le, résoudre tous les problèmes. Pour plus d'informations, voir:
Pour PDOException: could not find driver
pour MySQL
, et s'il s'agit d'un système d'exploitation basé sur Debian
,
Sudo apt-get -y install php5-mysql
Pour PHP 7 dans Ubuntu, vous pouvez également effectuer les tâches suivantes:
Sudo apt-get install php7.0-pgsql
Donc, maintenant, vous ne pouvez pas supprimer les lignes de commentaire dans php.ini
UPD: J'ai la même erreur, le problème n'était donc pas dans le pilote . J'ai changé mon database.ini
, mais chaque fois que j'ai vu une erreur ., Et je change de base de données dans .env
et les erreurs ont disparu.
Je me rends compte que c’est une vieille question, mais je l’ai trouvée dans une recherche Google. Je vais donc y répondre au cas où une autre personne l’aurait trouvée. Je suis sur un Mac et j'ai le même problème, mais je l'ai résolu en utilisant HomeBrew . Une fois que vous l'avez installé, vous pouvez simplement exécuter cette commande:
brew install php56-pdo-pgsql
Et remplacez le 56 par la version de PHP que vous utilisez sans le signe décimal.
Cela a fonctionné pour moi:
$ Sudo apt-get install php-Gd php-mysql
J'ai eu le même problème. C'est ce qui a fonctionné pour moi.
Il y a 2 fichiers php.ini:
NOTE: Ceci utilise ma version de PHP et Apache, changez pour ce que vous êtes.
Le fichier php.ini situé dans les deux dossiers est ce que vous devez mettre à jour, les extensions:
Ce sont ce dont vous avez besoin pour commenter (enlevez le symbole;).
Redémarrez Wamp et l'invite de commande.
Espérons que cela fonctionnera pour vous :).
Sudo apt-get install php7.1-pgsql
J'ai aussi ce problème. J'ai déjà résolu ce problème. Si vous utilisez Wamp, procédez comme suit.
- Allez à
wamp64/www/bin/php/php*
(où*
est la version de PHP que vous utilisez)- Editez le fichier php et décommentez cette ligne en supprimant le point-virgule:
;extension=pdo_pgsql to extension=pdo_pgsql
- Enregistrez et redémarrez votre serveur Wamp
Si cela ne fonctionne pas, veuillez vérifier votre .env
et votre configuration/base de données à nouveau.
Dans mon cas, j'avais deux versions de PHP installées. Donc tout ce que j'avais à faire était d'utiliser
$ /opt/lampp/bin/php artisan serve
au lieu de
$ php artisan serve
J'ai eu la même erreur sur PHP 7.3.7 docker avec laravel:
Ça marche pour moi
apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pgsql pdo_pgsql
Cela installera les pilotes pgsql et pdo_pgsql.
Maintenant, lancez cette commande pour supprimer les commentaires des lignes extension = pdo_pgsql.so et extension = pgsql.so de php.ini
sed -ri -e 's!;extension=pdo_pgsql!extension=pdo_pgsql!' $PHP_INI_DIR/php.ini
sed -ri -e 's!;extension=pgsql!extension=pgsql!' $PHP_INI_DIR/php.ini
Dans Windows 8 PC avec Laragon 3.4.0 180809, je faisais face au même problème. C'est arrivé dans mon cas parce que j'ai mis à jour Laragon et qu'il a ajouté une nouvelle version de PHP. Donc, dans laragon/bin/php/
j'avais en fait deux répertoires:
php-7.1.20-Win32-VC14-x64
php-7.1.7-Win32-VC14-x64
J'ai ajouté 7.1.20
dans ma variable PATH
. Mais dans ma console de commande, exécuter php --ini
montrait que le chemin était en réalité celui de l'ancien: php-7.1.7-Win32-VC14-x64
. J'ai donc supprimé l'ancien (pour des raisons de sécurité, je l'ai mis dans la corbeille). Mais Laragon n'a pas pu commencer après cela.
Donc, dans laragaon/etc/Apache2/mod_php.conf
, j'ai changé le chemin d'accès à la dernière version PHP. Laragon a ensuite redémarré et le problème est résolu. ????
Référence: Comment ajouter une autre version PHP - Forum Laragon
Résolu après 3 heures ... J'utilise WAMP (PHP 7.2.4), PostgreSQL 10, Laravel 5.6.29. J'ai chargé PHP extensions (pgsql, pdo_pgsql) depuis Wampserver 3.3, puis j’ai pu me connecter au serveur PostgreSQL avec un simple code de test php du répertoire www. Mais $ php artisan migrate
est toujours retourné
PDOException: :( "pilote introuvable")
J'ai vérifié le shell (git bash pour Windows) avec $ php --ini
, qui a renvoyé C:\wamp64\bin\php\php7.2.4\php.ini au lieu de c:\wamp64\bin\Apache\apache2.4.33\bin\php. ini, chargé par WAMPVous devez donc supprimer les commentaires de vos extensions pgsql et pdo_pgsql également dans C:\wamp64\bin\php\php7.2.4\php.ini, puis migrez ...
Pour ceux qui souhaitent utiliser Postgresql sur OpenSuse (et autres), essayez ce qui suit:
zypper --no-refresh in php5-pgsql
Vieux fil que je connais, mais j’ai perdu quelques heures de ma vie avec ça. Vous devez également définir les informations de base de données dans le fichier .env. Vous n'avez pas devez pour spécifier le pilote ici car la valeur par défaut spécifiée dans database.php est utilisée (je pense). Je me débattais parce qu'il y avait DB_CONNECTION=mysql
dans le fichier .env et que j'utilisais pgsql.