XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき

ここのところ普段と違うパソコンを使っているのですが、そこでPHP/symfonyの開発環境を構築する必要があり、ひさしぶりに、Windowsの簡単ウェブ開発環境インストーラXamppを使ってみました。

# 普段はビルド済のPHPとMySQL, Apacheをダウンロードして入れています。これでも手抜きと言われるかもしれませんが

xamppのサイトから、Windows版 1.7.0 ベーシック版 インストーラ(xampp-win32-1.7.0-installer.exe)というやつをダウンロードして実行するだけです。

それで、xamppについてくるサンプルや静的なページは問題なく動くのですが、symfonyで作ったアプリケーションを呼び出そうとすると、PHPがApacheを巻き込んで落ちてしまいます。

Apacheのログにはこんなエラーが

[notice] Parent: child process exited with status 3221225477 — Restarting.

いったいこれは何だ、ということで類似の問題が起こってないか検索してみたところ、このフォーラムにたどり着きました。XAMPP 1.7.0のインストーラが展開するdllが、XAMPPの中のMySQLと合致していないために起こると読みました。

フォーラムに書かれているとおり、

c:\xampp\php\libmysql_5.0.51a.dll

c:\xampp\php\ext\php_mysql_5.0.51a.dll

c:\xampp\php\ext\php_mysqli_5.0.51a.dll

を、それぞれ”_5.0.51a”のない方に上書きすることで、エラーは無くなりました。問題が解決するdllまで一緒に配布しているということは、原因は把握されてるんじゃないかと思うのですが、なんでこうなってるんでしょう。今これをやってるのがWindows 2000なので、XPやVistaでは問題ないのかしら。

というわけで、XAMPPで簡単にPHP開発環境ができることは確認できたのですが(上記の問題で何時間も使ったので簡単でもないという話も)、XAMPPの設定するphp.iniはいくつか微妙ですね。いまどきmagic quoteオンとかshort tagオンとか。E_NOTICEがオフになってたのでオンにしたら、XAMPP自身のトップページが警告を出しちゃうし。

WindowsのXAMPPでそのまま本番環境にする人はあんまりいないだろうとは思いますけど、万一自宅サーバとかでそういうことをするなら、php.iniは上から下まで読んで設定しなおしたほうがよさそうです。

[追記] Windows XPでも同様のエラーになるそうです

コメントを残す

メールアドレスが公開されることはありません。