この記事を書いたのは 2014/05/30 です |
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.
とあり、どうやらhttpdがクラッシュしてしまった様子。
公式サイトに情報が載っていました。
長大な文字列を正規表現系の関数に渡したときに、スタックオーバーフローを起こしてしまうことが原因だそうな。
httpd.exe のスタックサイズを大きくしてやります。
Microsoftのサイト から Visual Studio をダウンロードしてインストール。
`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
WindowsのPHPでエラーが発生するので、スタックサイズを増やして解決する - uzullaがブログ
http://uzulla.hateblo.jp/entry/2013/08/14/230551
Windows上のApacheがPHPのpreg_match_all()でクラッシュしたので調べてみた - スタジオ・アルカナ技術ブログ
https://www.s-arcana.co.jp/tech/2012/03/apache-crashed-using-php-preg-match-all-on-windows.html