【问题标题】:php open_basedir File() <- empty bracketsphp open_basedir File() <- 空括号
【发布时间】:2011-08-29 15:54:41
【问题描述】:

我有一个安装了 ISPConfig3 的服务器,我有一个用户拥有多个网站和共享文件。

我有一个奇怪的open_basedir 问题:

试图包括:/var/www/clients/client2/web4/web/core/defs.php 警告:require(): open_basedir 限制生效。 File() 不在允许的路径中:(/var/www/clients/client2/web4/web:/some more paths.....

如您所见,/var/www/clients/client2/web4/web/core/defs.php 位于/var/www/clients/client2/web4/web 之下,位于 open_basedir 允许的路径中。

知道它可能是什么吗?

编辑:

好的,我发现defs.php 实际上包含正确。结束后,我收到“File() is not within the allowed path(s)”错误:

注意File()

我认为这可能是因为 require/include 函数。顺便说一句,我正在使用 fastCGI。

有人在哪里见过这个吗?

注意:

http://www.howtoforge.com/forums/showthread.php?t=51164

在suPHP下不会出现。

我发现问题是在使用 eAccelerator 时引起的。切换到APC解决它!

【问题讨论】:

  • 您应该在下面写下您的答案,然后在超时后将其标记为正确答案。这将对以后遇到此问题的人有所帮助。
  • 问题是 - 它并没有真正解决。使用 suPHP 不是解决方案。希望我能在几天内真正解决(在 fastCGI 下)。目前我在一些网站上禁用了 open_basedir。

标签: php open-basedir


【解决方案1】:

它可以通过刷新 eAccelerator 缓存来修复 rm -rf /var/cache/php-eaccelerator/* 并重新加载 Apache。

如果由于之前的路径太窄而扩展open_basedir,尽管代码可以正常工作,但之前的警告仍会被错误地缓存并再次报告。

其他解决方案是配置 web 控制面板 /usr/share/doc/php-eaccelerator-..*/control.php 并设置eaccelerator.allowed_admin_path。然后通过浏览器清除缓存并立即重新加载Apache

在共享主机上,这是一个更大的问题。 (因为在不刷新缓存的情况下,包含的文件会保留在那里。即使禁用“open_basedir”也不会阻止警告。触摸文件也不好,因为像空格这样的小编辑不足以重新缓存,并且向后编辑会返回同样的问题。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2014-12-12
    • 2015-12-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多