Apache の起動時に PHP 拡張機能が読み込まれない
質問
Apache 2.2.11 のモジュールとして php を追加しました。
LoadModule php5_module "c:/php/php5apache2_2.dll"
そしてまた追加しました
AddType application/x-httpd-php .php
そして、PHP.ini では、拡張ディレクトリは次のように設定されています。 extension_dir = "C:\php\ext"
そして はい, 、ディレクトリは正しく、すべてのファイルが存在します。
しかし、Apache を起動すると、次のようなエラーが発生します。
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_mysql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_pdo_pgsql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_pgsql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
[Sun May 17 03:46:01 2009] [通知] Apache/2.2.11 (Win32) PHP/5.2.9-2 が設定されました -- 通常の操作を再開します
[Sun May 17 03:46:01 2009] [通知] サーバーが構築されました:2008年12月10日 00:10:06
[Sun May 17 03:46:01 2009] [通知] 親:作成された子プロセス 4652
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_mysql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_pdo_pgsql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
PHP の警告:PHP の起動:ダイナミック ライブラリ 'C:\php\ext\php_pgsql.dll' をロードできません - 指定されたモジュールが見つかりませんでした。 行 0 に不明があります
[Sun May 17 03:46:01 2009] [通知] 子供 4652:子プロセスが実行中です
[Sun May 17 03:46:01 2009] [通知] 子供 4652:開始ミューテックスを取得しました。
[Sun May 17 03:46:01 2009] [通知] 子供 4652:64 個のワーカー スレッドを開始します。
[Sun May 17 03:46:01 2009] [通知] 子供 4652:ポート 80 でリッスンするスレッドを開始します。
それで、私はおそらくここで簡単なことを忘れているのですが、誰かが私が何を忘れているのか教えてくれませんか?
解決
MySQL および PostgreSQL のサポートを PHP に追加するには、PHP 拡張機能の DLL が必要なだけではありません。MySQL および PostgreSQL のネイティブ ライブラリも必要です。PHP 拡張機能の DLL は、おそらく依存する DLL が見つからないため、起動できません。
MySQL および PostgreSQL クライアントがインストールされていること、およびそれらの DLL が特定の場所に配置されていることを確認してください。
I.E.例:
- php_mysql.dll は libmysql.dll に依存します
したがって、PHP が libmysql.dll を見つけられることを確認してください (これは Windows PHP のバイナリ ディストリビューションに付属していると思います)。確かではありませんが)。
他のヒント
パブロ・サンタクルスのアドバイスに追加します。 Windowsでは、PATH
環境で必要なライブラリを含めることができます。 (ノー必ずしもWindowsフォルダにコピーします)。ライブラリの未亡人をロードするときにもPATH
ディレクトリ内を検索します。
、その後、パッケージは、パッケージのルートにすべての依存関係を含める必要があります。あなたはC:\php
にPHP5.2をインストールしているのであれば、PATH
のENVARにこのディレクトリを追加します。 Apacheの再起動し、私は適切にロードするための拡張機能を期待したい。
私はWindows上でPHPの特定のバージョンに問題がありました。問題はlibmysqlました。私は同じ問題を抱えて誰かからphp.netサイトに掲載のバグを発見しました。
私は、以前のPHPのリリースを使用してlibmysqlが働きました。使用しているPHPの分布にノートをチェックしてください。私は特定のバージョンの後、彼らはlibmysqlに関する新しいポリシーを言及していることだと思います。
あなたがPHP言及したものから拡張子を見つけることができません。あなたは(読み取りアクセス権)を拡張子が存在することを、拡張子が配置されている場所を指定するphp.iniの上のパスを設定し、フォルダにアクセスできることをしていることを確認します。
すべてが本当の問題であるかもしれないものを見つけるための努力の窓/ system32にまで拡張を移動してみ失敗した場合。
よろしく、
これらの拡張機能は、MySQLとPostgreSQLのバイナリディストリビューションによって提供されているネイティブライブラリに依存しています。それらをインストールし、例えばApacheのbin
フォルダにLIBSを置きます。これらは、それぞれLIBMYSQL.DLL
とLIBPQ.DLL
されます。
私のシステムでのみのApache / PHPはそれらのデータベースのクライアントであり、また、それは私のApache / PHPの設定は、よりポータブルになるので、私は通常、代わりに彼らとWindows/System32
フォルダを汚染することを行います。
私の経験では、Windows上でPHPは、背後にある主要な痛みです。私は通常、それが最終的に仕事を得るが、関与グーグルと試行錯誤の多くが常にあります - 。私のために少なくとも
だから私は最終的にそれの病気や疲れと簡単にVMでのUbuntu Serverをインストールし、それを持っていたし、数分以内に実行されています。これはあなたのためのオプションであるかどうかは、私が言うことはできませんが、それがある場合には、ほとんど間違いなく、長期的にあなたの頭痛の多くを保存します。あなたは常に、周りのあなたのVMを移動するスナップショットを作成し、VMは適しています他のすべてのファンシーなものを行うことができます。
は言うまでもありません私は同じ問題を抱えていました。私は毎回私はphpMyAdminのにログインしようとしたそれらの迷惑なウィンドウのポップアップエラーのいずれかを取得しました。私は、ユーザー名とパスワードで入力し、エラーをスローします。
何が、私のためにそれを解決したもApacheのbinディレクトリにlibmysql.dlをコピーしました。奇妙なことがapparantly正しく含まれているが、まだ私はこれを行うために必要な拡張機能です。
これらの解決策をいくつか試しましたが、そのうちの 1 つ以上が機能しました...ここで重要なのは再起動です。これらの変更の間に再起動しませんでしたが、再起動後は正常に動作しました。
- postgres DLLをApache libディレクトリに追加します
- postgres パスをシステム PATH に追加します
- postgres DLLをsystem32に追加
PATH だけでも機能すると思いますが、ここを清潔にする時間がないので、そのままにします。
ここでの問題は、ApacheがPHPをロードしていることですが、PHPはその拡張モジュールを読み込むことができませんでした(mysqlの、PostgreSQLの、...)。 私はあなたが(ディレクトリの区切りとしてバックスラッシュ文字を使用しない)UNIX形式でphp.iniファイルにパスの値を入力すべきだと思います。そのphp.iniファイルでこれを変更します。
のextension_dir = "C:/ PHP / EXT"
私も同じ問題を抱えていたし、システム環境変数
に「PostgreSQLの」binパスを追加することで解決していますPATH:C:\プログラムファイル\のPostgreSQL \ 8.4 \ binに また、()のphpinfoで確認することができます。
私はPostgreSQLをインストールすると、、システムパスに設定すると、逃しました。私は手動でシステムを再起動を加えます。
私もこの問題を抱えていた、と32をsystenするために適切な(の.dll)をコピーし、それはまだ私のために動作しませんでした。私はWindows 7の64ビット版を実行しています。これは私のために働くことを得るために私はまた、extディレクトリにlibmysql.dllをコピーしなければなりませんでした。エラーメッセージは、Apacheのログと、良好な応答(たっ設立)を搭載したページを残します。
私は同じ問題を抱えていたし、Apacheのbinフォルダにlibmysql.dllをコピーを試みたが、それは(私はPHP 5.2.5のx64を設定してい)の問題を解決しました。 多くのおかげます。