私はis_dir
へのいくつかの呼び出しをページに持っています。彼らはいつも問題なく働いてきました。PHP:open_basedir allowed path
数日前、ホスティング会社は、PHPを5.2から5.3にアップグレードしました。それ以来、is_dir
にすべての私の呼び出しは次のエラー(メッセージ)をもたらしている:これは私を困惑
Warning: is_dir(): open_basedir restriction in effect.
File(/home/virtual/domain.com/public_html/galleries/img/002.JPG/)
is not within the allowed path(s):
(/home/virtual/domain.com:/home/virtual/_tmp)
in /home/virtual/domain.com/public_html/index.php on line 201
。
明らかに、エラーメッセージ(及び同様にphp_info
)によれば、(したがってサブディレクトリを含むない後続のスラッシュとの)ディレクトリ/home/virtual/domain.com
がopen_basedir
で有効/含まれ、is_dir
を介して反復処理しようとしているファイルが全てそのフォルダの下のサブフォルダにあります。だから、なぜ彼らは許可されたパスの中にいないのですか?彼らは明らかに!
不思議なことに、このエラーはときis_dir
falseを返し、ファイルがないフォルダはなく、通常のファイルである場合にのみには、すなわち、表示されます。エラーを投げずにディレクトリ全体を繰り返し処理しているようです。
類似した質問は前に投稿されました:Open_basedir restriction oddness(解決されません)。
誰もが考えている?
(注:これは共有ホストであると私はすべての管理者のアクセス権を持っていないとして、PHPの設定を変更すると、オプションではありません)
これは、実際のエラーメッセージでいますか?または、特定の特殊文字があるパスにありますか? – SteAp
一部のパスには、特殊文字「&」(アンパサンド)と「_」(アンダースコア)があります。しかし、大文字が特殊文字としてカウントされている場合を除き、特殊文字を含まないパスでもエラーが表示されます。特殊文字はすべてディレクトリ名にあり( 'is_dir'が' TRUE'と評価された場合は正しく解析され反復されます)、ファイル名(エラーが発生する場所)では決してありません。 –