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?
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.
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.
Pour ceux qui sont prêts à installer PHP uniquement pour pouvoir accéder aux serveurs PostGres, sans installer réellement PostGres, vous devez:
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.
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.
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.
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.
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 .
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
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 \.
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
Copiez le fichier libpq.dll à partir de l’emplacement/bin/php/dans Emplacement/bin/Apache // bin. Redémarrez le serveur Wamp.
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.
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.
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.
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.
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.
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.