wake-up-neo.com

PHP php_pgsql.dll wird unter Windows nicht geladen

PHP 5.2.8 weigert sich, php_pgsql.dll mit dem folgenden Fehler zu laden:

Warnung: PHP Start: Die dynamische Bibliothek 'D:\PHP\ext\php_pgsql.dll' kann nicht geladen werden. - Das angegebene Modul wurde nicht gefunden.

in Unknown in Zeile 0

Die .dll existiert in PHP/ext /.

Hat jemand anderes dieses Problem mit PHP unter Windows gehabt?

33
Ross

Schauen Sie sich die Informationen auf der PHP PostgreSQL-Installationsseite an: http://de.php.net/manual/de/pgsql.installation.php

Auf einem Windows-Server, der mit Apache konfiguriert ist, kann das Hinzufügen der folgenden Zeile zu httpd.conf zum Laden von libpq.dll viel Zeit sparen:

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

Beachten Sie, dass Sie Ihren Ordner entsprechend dem Installationspfad und der Version von PostgreSQL ändern müssen, die Sie installiert haben. Beachten Sie auch, dass Apache und PostgreSQL auf dem gleichen Server für Produktionsumgebungen nicht empfohlen werden.

Dies hat mein Setup sofort behoben.

80
Mac

Das ist mir auch mit PHP 5.4.1 passiert

Das Kopieren der anstößigen DLL überall hat nicht funktioniert, und ich habe PostgreSQL nicht auf dem Server installiert. Ich habe jedoch auch geplant, PHP für verschiedene Postgres-Versionen zu verwenden. Die einzige Lösung, die ich gefunden habe, war In httpd.conf eine Zeile wie folgt einfügen:

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

Aber mit Bezug auf die libpq.dll, die mit PHP mitgeliefert wird, wie folgt:

LoadFile "C:/php/libpq.dll"

Danach hat es gut für mich funktioniert.

46

Für diejenigen, die ihre PHP -Installation nur für den Zugriff auf PostGres-Server durchführen möchten, ohne PostGres tatsächlich zu installieren, müssen Sie Folgendes tun:

  • aktiviere php_pgsql.dll (und php_pdo_pgsql.dll, falls Sie PDO verwenden) in PHP.INI, 
  • stellen Sie sicher, dass sich libpq.dll, libiconv-2.dll und libintl-8.dll im Pfad befinden. Dies sind die Abhängigkeiten von php_pgsql.dll.

Diese 3 DLLs befinden sich in der PostGres-Installation. Ich habe sie gerade in Apache kopiert, so dass ich alles in sich geschlossen halte. Dadurch kann Apache die PHP - Engine mit PostGres-Unterstützung problemlos starten.

4
Marcovecchio

Das Problem liegt bei den zugehörigen Bibliotheken, die von php_pgsql.dll verwendet werden - wie libpq.dll, den OpenSLL-Bibliotheken usw. Sie müssen sie finden (aus der Zip-Distribution von Postgres, aus einem installierten psqlODBC-Treiber usw.) und in einem Ordner ablegen was ist in der PFAD. Wie für die Liste aller DLLs - verwenden Sie MS Dependency Walker (depend.exe).

Ein weiteres wichtiges Bit - Apache (wenn Sie Apache verwenden) hat einen eigenen Satz von OpenSSL-DLLs. Ersetzen oder benennen Sie diese einfach um, damit sie nicht mit denen der Postgres-Distribution kollidieren.

4
Milen A. Radev

Sie müssen libpq.dll von wamp\bin\php\php5.3.5 nach wamp\bin\Apache\Apache2.2.17\bin kopieren. Starten Sie den Wamp Server erneut. Inzwischen sind wir mit der PHP-Konfiguration fertig. Als nächstes werden wir phpPgAdmin installieren und verwenden.

4
Newcss

Nur um zu teilen, was für mich funktioniert hat, ohne sich mit libpq.dll auseinanderzusetzen. Ich habe sowohl extension=php_pdo_pgsql.dll als auch extension=php_pgsql.dll in php.ini unkommentiert. Zunächst weigerte sich Apache, anzufangen.

Ich füge dann "C:\Program Files (x86)\PostgreSQL\9.4\bin\" (abhängig von Ihrer Installation) in die Windows-Umgebung PATH ein, startete Apache erfolgreich und funktioniert.

2
BARON'S

Nur ein Gedanke - Stellen Sie sicher, dass die Postgres-Binärdateien sich im SYSTEM-Pfad befinden, nicht in Ihrem benutzerspezifischen Pfad. Das war das Problem auf meiner Maschine. :-)

Bearbeiten:

Kommen Sie zum Nachdenken. Das erklärt, warum Dependency Walker alles A-OK meldet, aber das Problem bleibt bestehen. Sie führen DW unter Ihrem eigenen Konto aus, während Apache als SYSTEM ausgeführt wird und daher keine persönlichen PATH-Einstellungen verfügbar sind .

2
Rytmis

Wie Ondřej Bouda erwähnte: Das Einrichten von Windows-Umgebungsvariablen reicht aus. Keine Kopien von DLLs, keine Einträge zu http-conf. Fügen Sie einfach das PHP-Verzeichnis (C:\xampp\php) zu PATH hinzu. Vergessen Sie nicht, XAMPP-Control-Panel neu zu starten, wenn Sie dies verwenden. Andernfalls werden die Änderungen nicht erkannt. (Und Apache aus Gründen neu starten.) 

Zum Beispiel war es auf XAMPP ausreichend, das Verzeichnis PHP .__ abzulegen. (d. h. C:\xampp\php) an die Systemvariable PATH. - Ondřej Bouda

1
juku

Speziell für WAMP-Server-Setups hier müssen Sie die libpg.dll-Datei in "C:\wamp\bin\Apache\Apache2.2.21\bin \" oder ähnliches kopieren. Das Kopieren nach ..\php\ext\und auch das Anpassen der PATH-Umgebungsvariablen reichte nicht (wenn überhaupt effektiv).

Ursprüngliche Antwort hier: http://www.wampserver.com/phorum/read.php?2,40270,57932

Speziell für XAMPP-Setups habe ich festgestellt, dass ich nur die libpg.dll-Datei in das Verzeichnis ..\php\ext\kopieren muss.

1
danjah

Sie müssen Ihrer httpd.conf-Datei die folgenden Zeilen hinzufügen:

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

Loadfile "C:\php\libpq.dll"

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

Quelle:  http://www.php.net/manual/de/pgsql.setup.php

0

Kopieren Sie die Datei libpq.dll von Standort/bin/php/nach Ort/bin/Apache // bin. Starten Sie den Wamp-Server neu.

0
Hitesh

Das einzige Mal, dass ich diesen Fehler gesehen habe (und der Dateiname und der ext-Pfad waren definitiv korrekt), war, als ich versuchte, eine falsche Version von DLL zu verwenden. Ich habe eine Version verwendet, die mit einer anderen Version von PHP als der, die ich ausführte, kompiliert wurde.

Stellen Sie sicher, dass es sich bei Ihrer Version definitiv um die Version PHP 5.2.8 handelt.

Bearbeiten: oder die Berechtigungen für die Datei wurden falsch festgelegt.

0
Jack Sleight

Dies ist ein Update für die Antwort von @Dayron Armas Peña. Das php-Paket pgsql 'dll' befindet sich an folgendem Speicherort:

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

Das Hinzufügen der obigen Zeile zur httpd.conf-Datei, abgesehen von dem Entfernen der Kommentarzeilen in den php.ini-Dateien, hat mein Problem gelöst.

0
srikanth

Ich fand das für mich zu arbeiten:

Nach der Installation von PostgreSQL müssen Sie libpq.dll von wamp\bin\php\phpX.X.X nach wamp\bin\Apache\Apache2.2*\bin kopieren. Und starten Sie den Wampserver neu.

0
Wale

LIBPQ.DLL Problem mit PHP unter Vista ...

  • Vergewissern Sie sich, dass Sie Postgres installiert haben. Wenn Sie php unter Windows mit Postgres-API installieren, ohne dass Postgres installiert werden, wird diese Warnung möglicherweise angezeigt. Es ist zu einfach, im Windows-Installationsprogramm auf alles zu klicken ...

  • Kommentieren Sie die entsprechende Zeile in php.ini aus. 

0
Dave Doolin

Ich habe das gerade gemacht und es hat gut funktioniert

extension=php_openssl.dll 

zu

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

der php_openssl.dll befindet sich im ext-Ordner, der nicht gefunden werden konnte.

0
azerafati

Ich habe die lösung:

1) Wenn Sie die Erweiterung php_pdo_pgsql laden möchten, laden Sie bitte auch php_pdo. (in php.ini)

2) php_pgsql.dll und php_pdo_pgsql.dll hängen von libpq.dll und php5ts.dll ab. libpg.dll ist die Bibliothek von postgreSQL, sie wurde jedoch in PHPs Binärpaket ..__ gebündelt. Wenn Sie PHP so konfigurieren, dass es mit Apache als Modul arbeitet, kann die abhängige Bibliothek nicht korrekt geladen werden. Sie müssen es also in Apache laden.

config in httpd.conf und die beiden Zeilen sollten vor LoadModule php5_module stehen

LoadFile "Vollständiger Pfad zu /php5gs.dll" LoadFile "vollständiger Pfad zu libpg.dll"

Ich hoffe es ist hilfreich.

0
ijab