PHP5 + MySQL + Apache2.2 で Apache が落ちる件

Windows7 に以下の構成でインストール。

  • PHP 5.2.6
  • MySQL 5.1.51
  • Apache 2.2

これで MDB2 等を使って MySQL にアクセスするスクリプトを動かすと、
PHP が Apache ごと落ちるという悲しい現象。
しかも必ず落ちるのではなく、落ちないこともある。(一番困るパターン!)

Apache の error.log を見ると

[Sat Oct 23 22:59:35 2010] [notice] Parent: child process exited with status 1 — Restarting.

などという素っ気ないメッセージ。

せめて、何で死んだのか遺言なり断末魔なりを残してくれ。

PHPやMySQLを最新モジュールにしてみたり、
ApacheやPHPで余計なモジュールをロードしないようにしてみたりと、
いろいろやったんだけど、全て空振り。

で、解決策、というか、結果的にこうしたらなおった、というのが
PHP をインストールしたフォルダの下にある libmysql.dll を
C:\Windows フォルダ直下に置いたらうまく動作するようになった。

これは私の予想なのだけど、
libmysql.dll というDLLは、実は MySQL の bin フォルダにもある。
(サイズとか微妙に違うので、PHP側のとは別モノだと思われる)
そして、PHP側、MySQL側両者にはしっかりパスが通っている。
どっちが動くかがすごく曖昧な状態(先に書いてある方が動く?)。

で、PHP のやつを Windows に置いたら上手く動いたということは、
MySQL側でなく、PHP側のDLLが動作するのが正しいということっぽい。

実際、PHP の ext フォルダにある php_mysql.dllとかは
こっちと連携してるんじゃないかな?
それが、何かの間違いでMySQL側のが動いたら落ちるとか、
そういうことじゃないかな?(かなりテキトーな予想)

この理屈が正しければ、MySQL側の libmysql.dll を殺すことでも
解決するんじゃないかと思われるけど、
Windowsフォルダにコピーしたら上手く動くようになったので、
今回はとりあえずそれで良しとする。

コメント

タイトルとURLをコピーしました