tonextone.com/note/

Last-modified: 2006-09-01 (金)

Copyright ©master_at_tonextone.com All rights reserved.

open_basedir の 怪

Posted : 2006-06-12 00:00 / Category : [開発日誌]
PHP は、mod_php での運用がデファクトスタンダードになっている。
共用のレンタルサーバでも、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() 系の設定も消してみる。
  • あ、良さそう。
  • 設定調整して様子見。« 今ここ。
なんていうか、微妙すぎ…。