Windows環境でPukiWikiを動かすとhttpdが落ちる
WindowsにApache 2.2.24+PHP 5.4.5を入れた環境にPukiWiki 1.4.7を設置したときの話です。
FrontPageの表示まではすんなり行きましたが、「テキスト整形のルール」のページを開こうとすると
サーバに接続できません
とChromeに怒られました。
Apacheのエラーログには
[Sat Mar 15 23:53:12 2014] [notice] Parent: child process exited with status 255 --- Restarting.&lf;
とあり、どうやらhttpdがクラッシュしてしまった様子。
原因
公式サイトに情報が載っていました。
長大な文字列を正規表現系の関数に渡したときに、スタックオーバーフローを起こしてしまうことが原因だそうな。
対処
httpd.exeのスタックサイズを大きくしてやります。
httpd.confで指定する方法 もあるようですが、僕の環境では効果が無かったので直接バイナリを弄ることにします。
Microsoftのサイト からVisual StudioのExpress版をダウンロードしてインストール。 バージョンは最新版で結構です。
C:\Program Files\Microsoft Visual Studio *.*\VC\bin
にあるeditbin.exeをcmdから起動します。
mspdb*.dllがないため~
と怒られる場合は、同じDOS窓で同フォルダのvcvars32.batを走らせた後、同じ操作を繰り返します。
スタックサイズを変更するには次のコマンドを実行します。 4194304は4*1024*1024で4MBです。ちなみにデフォルトは256KBです。 当然ですがhttpdは終了させておきましょう。
editbin /stack:4194304 httpd.exe&lf;
終わったらhttpdを起動して問題のページが正常に表示されるか確認してみましょう。