ただいまブログのデザインがてきとーになっております

ここのところ当ブログのサーバーがCPU100%に張り付いて無応答になることが頻発していたので、ApacheとかPHPとかAPCとかWordPressプラグインとか、あーでもないこーでもないと色々いじっていました。

何をやっても改善しないので、ふとテーマファイルをWordPressについてきたものに変えてみると、サーバの負荷がぴたりとおさまりました。まさかテーマファイルが原因だったとは。

ということで、真の原因はまだ見てないのですが、時間が取れるまでこのテーマのままになります。

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でも同様のエラーになるそうです

Windows+Apache2.2+mod_rewriteでURLにコロンを含められない

Internal Server Errorで、ログには”The given path misformatted or contained invalid characters:”と出ます。

Windowsのファイルシステムがコロンを使う(C:とか)ことと関連するApacheのバグだそうで、今のところ解決していない模様。

http://b.hatena.ne.jp/entry/http://akimoto.jp/blog/

みたいなURLのパラメータ受け取りをやろうとして.htaccessをいじっていたのですが、ローカルのWindowsでなんかエラーになるので検索したらそういうことだと。