共用のレンタルサーバでも、mod_php が使えるのが普通だろう。
で、safe_mode, open_basedir なわけである(参考)。
私がこれまで構築してきたサービスは、
専用サーバで、管理者アカウントを外部に配布しない、
いわゆる「自社サービス」がほとんどだったので、
safe_mode, open_basedir 系は実際に本気で使った経験が無かった。
で、最近構築しているサービスが、複数の仮想ホストでの運用になるので、
初めて本気で open_basedir を使ってみた。
…これが、なかなか上手くいかなかった。
ここ2ヶ月くらい、試しては上手くいかず、あきらめ切れず、また試す…
の繰り返しだったが、やっと上手くいった。
合理的な原因が見つかっていないので、様子をみている段階だが、
現段階の結論:
httpd.conf で、 open_basedir の設定をしている場合、
.htaccess で、 mbstring.* 系の設定をすると、
open_basedir が不具合を起こすようだ。
php.ini / ini_set() なら大丈夫っぽい。
以下、現象 〜 経過を早送り:
-
open_basedir の設定を httpd.conf の<VirtualHost>コンテナに書くと、
以下のようなエラーが出る。PHP Fatal error: Unknown: Cannot find serialization handler xxx in Unknown on line 0, referer: xxxxxxxxx
mod_php が PHP の構文解析に失敗しているような感じ。 - このエラーの再現率は、30% 程度。
- zend-multibyte, Zend Optimizer を怪しむ(野生の勘)。
-
怪しい部分について、有効 / 無効を切替えたり、
考え得る設定の組み合わせを、ほとんど総当りで試す。
- 解決の兆しも見えず…。
- やけになって、デフォルトの php.ini で試す。
- 相変わらず…(´Д⊂ モウダメポ
- .htaccess での設定とか、ini_set() 系の設定も消してみる。
- あ、良さそう。
- 設定調整して様子見。« 今ここ。