XAMPP Lite 1.7.0 でApacheが落ちる件。 [notice] Parent: child process exited with status 3221225477 — Restarting.

XAMPP Lite 1.7.0 を使っていると、Apacheが落ちました。
解決は出来たので、メモしておきます。


検索した感じ、XAMPP 1.7.0 でも XAMPP Lite 1.7.0 でも発生しているようです。
これを書いてる今は 1.7.2 がリリース済みですが、これで発生するか直ってるかは分かりません。

エラー内容

c:\example\xampplite\apache\logs\error.log
[notice] Parent: child process exited with status 3221225477 — Restarting.
apache.exeが落ちた時のエラーレポーティングダイアログの詳細部分
エラー署名
AppName: apache.exe AppVer: 2.2.11.0 ModName: php_pdo_mysql.dll
ModVer: 5.2.8.8 Offset: 0000250a

このようなエラーでapache.exeが落ちます。
すぐにapacheは再起動しますが、また落ちてしまうので、大体3回くらいエラー落ちのダイアログが出て止まります。

原因

すいません、よく分かってません。
検索した情報を元に、やってみたらエラーが回避できちゃった系です。

googleでは完全マッチの症例は見当たらなかったが、php_pdo_mysql.dllの
このバージョン(Ver.5.2.8.8)による不具合はいくつか見ることが出来た。
その中では、php_pdo_mysql.dllや、libmysql.dllを入れ替える対応策がとられていた。
ただ、なぜそのような対応を行ったかという明確な理由(概ね最新版だから)が
記されているものはなかった。

http://www.dalf.jp/wiki/php/doku.php?id=dalf-php-type1-01000001-001

この様に、明確な原因が分かるところがないのか、対策が様々みたいです。

回避策

c:\example\xampplite\php\libmysql.dll
c:\example\xampplite\apache\bin\libmysql.dll

上記2ファイルを退避。*1
それぞれ同じ場所においてある libmysql_5.0.51a.dll を複製して libmysql.dll にリネーム。
要するに libmysql.dll の代わりに libmysql_5.0.51a.dll を使うようにしました。

元々の libmysql.dll の詳細
md5
67c0a91f58b52cc68a87e8be467bfd31
ファイルサイズ
1,646,592 バイト

2つとも同じファイルでした。

注意
c:\example\xampplite\mysql\bin\libmysql.dll

前述の引用元では、3つの libmysql.dll を入れ替えると書いてありました。
しかし、これはファイルサイズも違うし libmysql_5.0.51a.dll も置いてなかったので、入れ替えていません。
結果として入れ替えたのは2つの libmysql.dll ですが、エラーは回避できました。

参考

  1. http://www.dalf.jp/wiki/php/doku.php?id=dalf-php-type1-01000001-001
  2. XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき – 秋元

それぞれ、こことは違う微妙に異なる回避策が書いてあります。
どの回避策を採用するかはさておき、目を通しておくと原因がなんとなく分かるかもしれません。

*1:zip圧縮してlibmysql.zipとして同じフォルダに残しました。