web-dev-qa-db-ja.com

PHP Windowsでphp_pgsql.dllをロードしない

PHP 5.2.8はphp_pgsql.dllのロードを拒否していますが、次のエラーが発生します。

警告:PHPスタートアップ:ダイナミックライブラリ 'D:\ PHP\ext\php_pgsql.dll'をロードできません-指定されたモジュールが見つかりませんでした。

行0で不明

.dllはPHP/ext /に存在します。

他の誰かが以前にWindowsでPHPでこの問題を抱えていましたか?

33
Ross

PHP PostgreSQLインストールページ: http://us.php.net/manual/en/pgsql.installation.php の情報を確認してください。

Apacheで構成されたWindowsサーバーでは、httpd.confに次の行を追加してlibpq.dllをロードすると、時間を大幅に節約できます。

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

インストールしたPostgreSQLのインストールパスとバージョンに応じてフォルダを変更する必要があることに注意してください。また、実稼働環境では、ApacheとPostgreSQLを同じサーバーに配置することはお勧めできません。

これにより、セットアップが即座に修正されました。

81
Mac

これは、PHP 5.4.1

問題のあるDLL=どこでも動作しませんでした。サーバーにPostgreSQLをインストールしていませんが、異なるPostgresバージョンに対してPHP 、したがって、私が働いたことがわかった唯一の解決策は、httpd.confに次のような行を入れることでした:

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

しかし、次のように、PHPにバンドルされているlibpq.dllを参照します。

LoadFile "C:/php/libpq.dll"

その後、それは私にうまく働きました。

46

PostGresを実際にインストールせずに、PostGresサーバーにのみアクセスできるPHPインストールを希望する場合は、以下を行う必要があります。

  • pHP.INIでphp_pgsql.dll(PDOを使用している場合はphp_pdo_pgsql.dll)拡張機能を有効にし、
  • libpq.dll、libiconv-2.dll、libintl-8.dllがパスにあることを確認してください。これらは、php_pgsql.dllの依存関係です。

これら3つのDLLは、PostGresのインストールに含まれています。私はそれらをApache\binにコピーしました。そのようにして、すべてを自己完結させます。そうすることで、ApacheはPostGresをサポートしてPHPエンジンを正常に起動できます。

4
Marcovecchio

問題は、php_pgsql.dllで使用される関連ライブラリ(libpq.dll、OpenSLLなど)にあります。それらを(PostgresのZip配布から、インストールされたpsqlODBCドライバーなどから)見つけてフォルダーに入れる必要があります。これはPATHにあります。すべてのDLLのリストについては、MS Dependency Walker(depends.exe)を使用してください。

もう1つの重要なビット-Apache(Apacheを使用する場合)には、独自のOpenSSL DLLのセットがあります。 Postgresディストリビューションのものと衝突しないように、それらを置き換えるか、単に名前を変更します。

4
Milen A. Radev

Libpq.dllをwamp\bin\php\php5.3.5からwamp\bin\Apache\Apache2.2.17\binにコピーする必要があります。再びWamp Serverを再起動します。これで、phpの設定は完了です。次に、phpPgAdminをインストールして使用します。

4
Newcss

_libpq.dll_を処理せずに、私のために働いたものを共有するだけです。 php.iniで_extension=php_pdo_pgsql.dll_と_extension=php_pgsql.dll_の両方のコメントを外しました。最初、Apacheは起動を拒否しました。

次に、"C:\Program Files (x86)\PostgreSQL\9.4\bin\"(インストールに応じて)をWindows環境のPATHに追加し、Apacheを正常に起動して動作します。

2
BARON'S

考えてみてください。Postgresバイナリが、ユーザー固有のパスではなく、SYSTEMパスにあることを確認してください。それが起こると、それは私のマシンの問題でした。 :-)

編集:

考えてみてください。それが、Dependency WalkerがすべてのA-OKを報告するのに問題が解決しない理由を説明しています.ApacheはSYSTEMとして実行されているため、自分のアカウントでDWを実行しているため、個人のPATH設定は利用できません。

2
Rytmis

OndřejBoudaが述べたように、Windows環境変数を設定するだけで十分です。 dllのコピー、http-confへのエントリはありません。 phpディレクトリ(C:\ xampp\php)をPATHに追加するだけです。これを使用する場合は、XAMPP-Control-Panelを再起動することを忘れないでください。再起動すると、変更が認識されなくなります。 (そして、原因のApacheを再起動します。)

たとえば、XAMPPでは、PHPディレクトリ(つまり、C:\ xampp\php)をシステムPATH変数に置くだけで十分でした。–OndřejBouda

1
juku

特にWAMPサーバーのセットアップでは、libpg.dllファイルを「C:\ wamp\bin\Apache\Apache2.2.21\bin \」などにコピーする必要があります。それを..\php\ext \にコピーし、PATH env変数を調整するだけでは十分ではありませんでした(まったく有効な場合)。

元の回答はここにあります: http://www.wampserver.com/phorum/read.php?2,40270,57932

特にXAMPPのセットアップでは、libpg.dllファイルを..\php\ext \ディレクトリにコピーするだけでよいことがわかりました。

1
danjah

Httpd.confファイルに次の行を追加する必要があります。

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

Loadfile "C:\php\libpq.dll"

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

ソース: http://www.php.net/manual/en/pgsql.setup.php

0

ファイルlibpq.dllを場所/ bin/php /から場所/ bin/Apache // binにコピーします。ワンプサーバーを再起動します。

0
Hitesh

私がこのエラーを見たのは(ファイル名とextパスが間違いなく正しい)唯一のときは、DLLの間違ったバージョンを使用しようとしたとき。 PHPの異なるバージョンは、私が実行していたものと同じです。

バージョンがPHP 5.2.8。

編集:または、ファイルのアクセス許可が正しく設定されていません。

0
Jack Sleight

これは、@ Dayron ArmasPeñaの回答の更新です。 phpにバンドルされたpgsql 'dll'は、次の場所にあります。

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

httpd.confファイルの必要な行のコメントを外す以外に、上記の行をphp.iniファイルに追加すると、問題が解決しました。

0
srikanth

私はこれが私のために働くことがわかりました:

PostgreSQLのインストール後、libpq.dll from wamp\bin\php\phpX.X.Xからwamp\bin\Apache\Apache2.2*\bin。そして、Wampserverを再起動します。

0
Wale

Vista上のphpでのLIBPQ.DLLの問題...

  • 実際にpostgresがインストールされていることを確認してください。 postgresをインストールせずにpostgres APIを使用してWindowsにphpをインストールすると、この警告が表示される場合があります。 Windowsインストーラーのすべてをクリックするだけでも簡単です...

  • Php.iniの関連する行をコメントアウトします。

0
Dave Doolin

私はこれをやっただけで、php.ini内のphpフォルダでうまく動作しましたこの行を変更しました

extension=php_openssl.dll 

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

php_openssl.dllが見つかりませんでしたextフォルダー内にあります。

0
azerafati

私は解決策を得ました:

1)php_pdo_pgsql拡張モジュールをロードする場合は、php_pdoもロードしてください。 (php.ini内)

2)php_pgsql.dllとphp_pdo_pgsql.dllは、libpq.dllとphp5ts.dllに依存しています。 libpg.dllはpostgreSQLのライブラリですが、PHPのバイナリパッケージにバンドルされています。 PHP=をApacheのモジュールとして動作するように設定すると、依存ライブラリを正しくロードできません。したがって、Apacheでロードする必要があります。

httpd.confの設定と2行はLoadModule php5_moduleの前にある必要があります

LoadFile "/php5gs.dllへのフルパス" LoadFile "libpg.dllへのフルパス"

お役に立てば幸いです。

0
ijab