PHP:open_basedir 允许的路径

2024-01-06

我有几个电话要打给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正在尝试迭代全部位于该文件夹下的子文件夹中。那么为什么它们不在允许的路径内呢?显然他们是!

奇怪的是,这个错误appears仅在以下情况下出现is_dir返回 false,即当文件是not一个文件夹,但是一个普通文件。它似乎可以正确地遍历目录而不会引发错误。

之前在这里发布过类似的问题:open_basedir 限制奇怪 https://stackoverflow.com/questions/7586616/open-basedir-restriction-oddness(未找到解决方案)。

有人有主意吗?

(注意:更改 PHP 设置不是一个选项,因为这是共享主机,我没有任何管理员访问权限)


PHP 中存在未修复的错误,当您打开或检查以现有文件作为前缀、不存在部分作为后缀的路径时,会触发该错误。在你的例子中有存在的部分/home/virtual/domain.com/public_html/galleries/img/002.JPG后缀不存在/(路径中的尾部斜杠)。

有解释说这不是一个错误:“这是预期的行为。不存在的非路径(带有斜线的路径)被视为在 basedir 之外。”,但我不这么认为。仅当路径的第一部分是现有文件时才会触发此错误。

PHP 错误:

  • “Bug #54419 :: is_dir() 在文件上调用,并带有尾部斜杠,如果 open_basedir 则抛出警告” https://bugs.php.net/bug.php?id=54419
  • “Bug #52065 :: 将文件作为目录访问时有关 open_basedir 限制的警告” https://bugs.php.net/bug.php?id=52065
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:open_basedir 允许的路径 的相关文章

随机推荐