我is_dir
在一个页面上有几个电话。他们一直工作没有问题。
几天前,托管公司将 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 限制奇怪(未找到解决方案)。
有人有想法么?
(注意:更改 PHP 设置不是一个选项,因为这是一个共享主机,我没有任何管理员访问权限)