我有一台安装了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解决它!
答案 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”也不会阻止警告。同时触摸文件也不好,因为像空格这样的小编辑不足以重新缓存,而向后编辑则返回同样的问题。)