PHP 5.2.8はphp_pgsql.dll
のロードを拒否していますが、次のエラーが発生します。
警告:PHPスタートアップ:ダイナミックライブラリ 'D:\ PHP\ext\php_pgsql.dll'をロードできません-指定されたモジュールが見つかりませんでした。
行0で不明
.dllはPHP/ext /に存在します。
他の誰かが以前にWindowsでPHPでこの問題を抱えていましたか?
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を同じサーバーに配置することはお勧めできません。
これにより、セットアップが即座に修正されました。
これは、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"
その後、それは私にうまく働きました。
PostGresを実際にインストールせずに、PostGresサーバーにのみアクセスできるPHPインストールを希望する場合は、以下を行う必要があります。
これら3つのDLLは、PostGresのインストールに含まれています。私はそれらをApache\binにコピーしました。そのようにして、すべてを自己完結させます。そうすることで、ApacheはPostGresをサポートしてPHPエンジンを正常に起動できます。
問題は、php_pgsql.dllで使用される関連ライブラリ(libpq.dll、OpenSLLなど)にあります。それらを(PostgresのZip配布から、インストールされたpsqlODBCドライバーなどから)見つけてフォルダーに入れる必要があります。これはPATHにあります。すべてのDLLのリストについては、MS Dependency Walker(depends.exe)を使用してください。
もう1つの重要なビット-Apache(Apacheを使用する場合)には、独自のOpenSSL DLLのセットがあります。 Postgresディストリビューションのものと衝突しないように、それらを置き換えるか、単に名前を変更します。
Libpq.dllをwamp\bin\php\php5.3.5からwamp\bin\Apache\Apache2.2.17\binにコピーする必要があります。再びWamp Serverを再起動します。これで、phpの設定は完了です。次に、phpPgAdminをインストールして使用します。
_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を正常に起動して動作します。
考えてみてください。Postgresバイナリが、ユーザー固有のパスではなく、SYSTEMパスにあることを確認してください。それが起こると、それは私のマシンの問題でした。 :-)
編集:
考えてみてください。それが、Dependency WalkerがすべてのA-OKを報告するのに問題が解決しない理由を説明しています.ApacheはSYSTEMとして実行されているため、自分のアカウントでDWを実行しているため、個人のPATH設定は利用できません。
OndřejBoudaが述べたように、Windows環境変数を設定するだけで十分です。 dllのコピー、http-confへのエントリはありません。 phpディレクトリ(C:\ xampp\php)をPATHに追加するだけです。これを使用する場合は、XAMPP-Control-Panelを再起動することを忘れないでください。再起動すると、変更が認識されなくなります。 (そして、原因のApacheを再起動します。)
たとえば、XAMPPでは、PHPディレクトリ(つまり、C:\ xampp\php)をシステムPATH変数に置くだけで十分でした。–OndřejBouda
特に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 \ディレクトリにコピーするだけでよいことがわかりました。
Httpd.confファイルに次の行を追加する必要があります。
PHPIniDir "c:/PHP/"
Loadfile "C:\php\php5ts.dll"
Loadfile "C:\php\libpq.dll"
LoadModule php5_module "c:/PHP/php5Apache2_2.dll"
ファイルlibpq.dllを場所/ bin/php /から場所/ bin/Apache // binにコピーします。ワンプサーバーを再起動します。
私がこのエラーを見たのは(ファイル名とextパスが間違いなく正しい)唯一のときは、DLLの間違ったバージョンを使用しようとしたとき。 PHPの異なるバージョンは、私が実行していたものと同じです。
バージョンがPHP 5.2.8。
編集:または、ファイルのアクセス許可が正しく設定されていません。
これは、@ Dayron ArmasPeñaの回答の更新です。 phpにバンドルされたpgsql 'dll'は、次の場所にあります。
LoadFile "C:/wamp/bin/php/php5.4.12/libpq.dll"
httpd.conf
ファイルの必要な行のコメントを外す以外に、上記の行をphp.ini
ファイルに追加すると、問題が解決しました。
私はこれが私のために働くことがわかりました:
PostgreSQLのインストール後、libpq.dll
from wamp\bin\php\phpX.X.X
からwamp\bin\Apache\Apache2.2*\bin
。そして、Wampserverを再起動します。
Vista上のphpでのLIBPQ.DLLの問題...
実際にpostgresがインストールされていることを確認してください。 postgresをインストールせずにpostgres APIを使用してWindowsにphpをインストールすると、この警告が表示される場合があります。 Windowsインストーラーのすべてをクリックするだけでも簡単です...
Php.iniの関連する行をコメントアウトします。
私はこれをやっただけで、php.ini内のphpフォルダでうまく動作しましたこの行を変更しました
extension=php_openssl.dll
に
extension=C:\php\ext\php_openssl.dll
php_openssl.dll
が見つかりませんでしたext
フォルダー内にあります。
私は解決策を得ました:
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へのフルパス"
お役に立てば幸いです。