Ophite 发表于 2011-06-23 15:42

一个很奇怪的问题,有关require,include和require_once,include_once

设置了open_basedir
只要使用require或include包含文件(不管是./xx.php还是xx.php)都是报下面的错误
Warning: include() : open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/:/tmp/:/var/cache/) in /var/www/testdir.php on line 2
而且修改php.ihi error_reporting = E_ALL & ~E_NOTICE还是会产生
FastCGI sent in stderr: "PHP Warning:include() : open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/:/tmp/:/var/cache/) in /var/www/testdir.php on line 2" while reading response header from upstream, client: 192.168.1.63, server: localhost, request: "GET /testdir.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.1.207"

但是奇怪的是用require_once或include_once就不会有任何的warning或错误

这是为什么?

网上很多都说是注释open_basedir,可这样不是一个webshell就可以随便浏览系统文件了?

Ophite 发表于 2011-06-23 16:53

自己解决了
发个牢骚{
baidu了N久没一个用
google第一页就OK了
}
原来是eaccelerator的原因。
官方说明
--without-eaccelerator-use-inode
Don't use inodes to determine hash keys. This is turned off by default in win32 because it doesn't use inodes. If disabled md5 is used to hash the filenames, which adds extra overhead.
怪不得我用2003测试的时候没问题。linux就出问题
页: [1]
查看完整版本: 一个很奇怪的问题,有关require,include和require_once,include_once