web-dev-qa-db-fra.com

PHP ne charge pas php_pgsql.dll sous Windows

PHP 5.2.8 refuse de charger php_pgsql.dll, avec l'erreur suivante:

Avertissement: PHP Démarrage: impossible de charger la bibliothèque dynamique 'D:\PHP\ext\php_pgsql.dll' - Le module spécifié est introuvable.

dans Unknown on line 0

Le fichier .dll existe dans PHP/ext /.

Quelqu'un d’autre a-t-il déjà rencontré ce problème avec PHP sous Windows?

33
Ross

Consultez les informations sur la PHP page d'installation de PostgreSQL: http://us.php.net/manual/en/pgsql.installation.php

Sur un serveur Windows, configuré avec Apache, l'ajout de la ligne suivante à httpd.conf pour charger libpq.dll peut vous faire gagner beaucoup de temps:

LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll"

Notez que vous devrez modifier votre dossier en fonction du chemin d’installation et de la version de PostgreSQL que vous avez installée. Notez également qu'avoir Apache et PostgreSQL sur le même serveur pour les environnements de production n'est pas recommandé.

Cela a corrigé ma configuration instantanément.

80
Mac

Cela m'est arrivé aussi avec PHP 5.4.1

Copier partout DLL incriminé n'a pas fonctionné. PostgreSQL n'est pas installé sur le serveur, mais j'ai également prévu d'utiliser PHP contre différentes versions de Postgres. mettre dans httpd.conf une ligne comme ceci:

LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll"

Mais en référence à la libpq.dll fournie avec PHP, comme ceci:

LoadFile "C:/php/libpq.dll"

Après cela, cela a bien fonctionné pour moi.

46

Pour ceux qui sont prêts à installer PHP uniquement pour pouvoir accéder aux serveurs PostGres, sans installer réellement PostGres, vous devez:

  • active php_pgsql.dll (et php_pdo_pgsql.dll, si vous utilisez PDO) avec l'extension PHP.INI, 
  • assurez-vous que libpq.dll, libiconv-2.dll et libintl-8.dll sont dans le chemin. Ce sont les dépendances php_pgsql.dll.

Ces 3 DLL se trouvent dans l’installation de PostGres. Je viens de les copier dans Apache\bin, de cette façon je garde tout en soi. En faisant cela, Apache peut démarrer le moteur PHP comme il convient, avec le support PostGres.

4
Marcovecchio

Le problème concerne les bibliothèques associées utilisées par php_pgsql.dll, telles que libpq.dll, OpenSLL, etc. qui est dans le chemin. En ce qui concerne la liste de toutes les DLL, utilisez MS Dependency Walker (depend.exe).

Un autre élément important - Apache (si vous utilisez Apache) a son propre ensemble de DLL OpenSSL. Remplacez ou renommez simplement ces noms pour ne pas entrer en conflit avec ceux de la distribution Postgres.

4
Milen A. Radev

Vous devez copier libpq.dll de wamp\bin\php\php5.3.5 vers wamp\bin\Apache\Apache2.2.17\bin. Encore une fois redémarrez le serveur Wamp. Nous avons maintenant terminé avec la configuration php. Ensuite, nous allons installer phpPgAdmin et l'utiliser.

4
Newcss

Juste pour partager ce qui a fonctionné pour moi, sans traiter avec libpq.dll. J'ai commenté à la fois extension=php_pdo_pgsql.dll et extension=php_pgsql.dll dans php.ini. Au début, Apache a refusé de commencer.

J'ai ensuite ajouté "C:\Program Files (x86)\PostgreSQL\9.4\bin\" (selon votre installation) dans l'environnement Windows PATH, a démarré Apache avec succès et fonctionne.

2
BARON'S

Juste une pensée - assurez-vous que les fichiers binaires Postgres sont dans le chemin SYSTEM, pas dans votre chemin spécifique à l'utilisateur. Il se trouve que c’était le problème sur ma machine. :-)

Modifier:

A bien y penser, cela explique pourquoi Dependency Walker signale tout A-OK mais le problème persiste: vous exécutez DW sous votre propre compte, alors qu'Apache est exécuté en tant que SYSTEM et ne dispose donc pas de vos paramètres personnels PATH .

2
Rytmis

Comme Ondřej Bouda l'a mentionné: La configuration de variables d'environnement Windows suffit. Aucune copie de dll, aucune entrée dans http-conf. Ajoutez simplement le répertoire php (C:\xampp\php) à PATH. N'oubliez pas de redémarrer XAMPP-Control-Panel si vous l'utilisez, sinon il ne connaîtra pas les modifications. (Et redémarrez Apache de cause.) 

Par exemple, sur XAMPP, il suffisait de mettre le répertoire PHP (c.-à-d. C:\xampp\php) à la variable système PATH. - Ondřej Bouda

1
juku

Pour les configurations de serveur WAMP ici, vous devez copier le fichier libpg.dll dans "C:\wamp\bin\Apache\Apache2.2.21\bin \" ou similaire. Le copier dans ..\php\ext\et ajuster la variable d'environnement PATH ne suffisaient tout simplement pas (même s'ils étaient efficaces).

Réponse originale fournie ici: http://www.wampserver.com/phorum/read.php?2,40270,57932

Spécifiquement pour les configurations XAMPP, j'ai découvert qu'il me suffisait de copier le fichier libpg.dll dans le répertoire ..\php\ext \.

1
danjah

Vous devez ajouter les lignes suivantes à votre fichier httpd.conf:

PHPIniDir "c:/PHP/"
Loadfile "C:\php\php5ts.dll"

Loadfile "C:\php\libpq.dll"

LoadModule php5_module "c:/PHP/php5Apache2_2.dll"

La source:  http://www.php.net/manual/en/pgsql.setup.php

0
Rodolfo Villaruz

Copiez le fichier libpq.dll à partir de l’emplacement/bin/php/dans Emplacement/bin/Apache // bin. Redémarrez le serveur Wamp.

0
Hitesh

La seule fois où j'ai vu cette erreur (et le nom de fichier et le chemin ext étaient certainement corrects), c'est lorsque j'ai essayé d'utiliser une version incorrecte de la DLL, à savoir. J'en ai utilisé un qui a été compilé avec une version différente de PHP de celle que j'utilisais.

Assurez-vous que votre version est bien celle compilée avec PHP 5.2.8.

Modifier: ou, les autorisations sur le fichier ont été définies de manière incorrecte.

0
Jack Sleight

Ceci est une mise à jour de la réponse de @Dayron Armas Peña. La php bundlée pgsql 'dll' se trouve à l'emplacement suivant:

LoadFile "C:/wamp/bin/php/php5.4.12/libpq.dll"

L'ajout de la ligne ci-dessus au fichier httpd.conf en plus de supprimer les lignes requises dans les fichiers php.ini a résolu mon problème.

0
srikanth

J'ai trouvé que cela fonctionne pour moi:

Après l'installation de PostgreSQL, vous devez copier libpq.dll de wamp\bin\php\phpX.X.X à wamp\bin\Apache\Apache2.2*\bin. Et redémarrez le Wampserver.

0
Wale

LIBPQ.DLL problème avec php sur Vista ...

  • Vérifiez que vous avez bien installé Postgres. Si vous installez php sur Windows avec l'API postgres, sans que postgres soit installé, vous pouvez recevoir cet avertissement. Il est trop facile de tout cliquer sur le programme d'installation de Windows ...

  • Commentez la ligne correspondante dans php.ini. 

0
Dave Doolin

Je viens de faire cela et cela a fonctionné parfaitement.

extension=php_openssl.dll 

à

extension=C:\php\ext\php_openssl.dll 

le php_openssl.dll est dans le dossier ext qui est introuvable.

0
azerafati

J'ai eu la solution:

1) Si vous voulez charger l'extension php_pdo_pgsql, veuillez aussi charger php_pdo. (en php.ini)

2) php_pgsql.dll et php_pdo_pgsql.dll dépendent de libpq.dll et de php5ts.dll. libpg.dll est la bibliothèque de postgreSQL, mais elle a été intégrée dans le paquet binaire de PHP . Lors de la configuration de PHP pour fonctionner en tant que module avec Apache, il ne peut pas charger correctement la bibliothèque dépendante. Et vous devez donc le charger dans Apache.

config dans httpd.conf et les deux lignes doivent être avant LoadModule php5_module

LoadFile "Chemin complet de /php5gs.dll" LoadFile "chemin complet de libpg.dll"

J'espère que ça vous sera utile.

0
ijab