MySQLの最近のブログ記事

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フォルダにコピーしたら上手く動くようになったので、
今回はとりあえずそれで良しとする。

2017年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

アーカイブ

なるほどショッピングVol5番組への直リンク
Powered by Movable Type 5.2.10