php open_basedir File()< - 空括号

时间:2011-08-29 15:54:41

标签: php open-basedir

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

我有一个奇怪的open_basedir问题:

Trying to include: /var/www/clients/client2/web4/web/core/defs.php
Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s): (/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()< - 大括号是空的。

我认为这可能是因为require / include函数。我正在使用fastCGI btw。

有人在任何地方见过这个吗?

注:

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

它不会出现在suPHP下。

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

1 个答案:

答案 0 :(得分: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”也不会阻止警告。同时触摸文件也不好,因为像空格这样的小编辑不足以重新缓存,而向后编辑则返回同样的问题。)