enable-zend-multibyte
初のはてな日記が障害調査の経緯とは。
■現象
・PHPで構築したWebアプリが、使用を続けていると突然parse errorを出して動かなくなる。
突然、なんて言葉は使いたくないんだけど、今のところそうとしか言いようがない(´・ω・`)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Parse error: parse error, unexpected T_STRING in x[ファイル名]x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・リロードしても変化なし。
・同サーバで動くWebアプリ build by PHP 全てに影響する。
・apache再起動で正常動作に戻る。
■調査方針
・エラー発生時にphpinfo()の挙動はどうなるか?←未確認
・サーバ・プログラム変更がない運用状態からのparse error発生に関して調査。
・再現性の有無(頻発するものの原因が掴めていない)
XOOPSの導入事例に似たような現象が散見される。
- http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=2180&post_id=10285
- http://ml.php.gr.jp/pipermail/php-users/2005-January/024609.html
原因として挙げられているのは、configure時のオプション「--enable-zend-multibyte」の存在。
これを外して再makeすれば直るとのこと。
ただ、同オプションを付与したサーバは他にもあるんだけど問題は起こしていないんだよね…。
■疑惑の種
そこで思い至ったのは、そもそも「zend-multibyte」って何さ?という話。
軽く調べた感じでは、PHPスクリプトをShift-JISで記述できるようにするための設定とのこと。
php.iniの設定項目である「mbstring.script_encoding」を使うためのようです。
…で、これがどうしてメモリ管理と競合するんだろう???
<追記:2008/10/17>
解決策に辿り着けずしばらく放置していたんですが、俄かに該当サーバの使用頻度が高まったため再調査です。
検索したところ、以前よりもヒットする情報がありました。
http://okwave.jp/qa4349618.html
↑で紹介されていた、.htaccess で php.iniの設定値「mbstring.script_encoding」の値を書き換える対応を行いました。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
php_value mbstring.script_encoding UTF-8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
を各ツールのディレクトリに設置しました。
現在、仮運用中ですが問題がなければこのまま本運用としたい所存です。
…エラー報告の間隔は減った気がします。無事にいきますように(-人-)