我遇到 file_exists 返回 false 而 is_file 返回 true 的问题。
echo(getmygid()." = gid\n"); //501
echo(getmyuid()." = uid\n"); //501
echo(posix_getgid()." = pgid\n"); //501
echo(posix_getuid()." = puid\n"); //501
var_dump(file_exists("/home/www/public_html/")); //bool(true)
var_dump(file_exists("/home/www/public_html/index.html")); //bool(false)
var_dump(is_file("/home/www/public_html/index.html")); //bool(true)
var_dump(stat("/home/www/public_html/index.php"));
输出是:
501 = gid
501 = uid
501 = pgid
501 = puid
bool(true)
bool(false)
bool(true)
array(26) {
[0]=>
int(51712)
[1]=>
int(58055)
[2]=>
int(33197)
[3]=>
int(1)
[4]=>
int(501)
[5]=>
int(501)
[6]=>
int(0)
[7]=>
int(473)
[8]=>
int(1323573973)
[9]=>
int(1323573973)
[10]=>
int(1323574039)
[11]=>
int(4096)
[12]=>
int(8)
["dev"]=>
int(51712)
["ino"]=>
int(58055)
["mode"]=>
int(33197)
["nlink"]=>
int(1)
["uid"]=>
int(501)
["gid"]=>
int(501)
["rdev"]=>
int(0)
["size"]=>
int(473)
["atime"]=>
int(1323573973)
["mtime"]=>
int(1323573973)
["ctime"]=>
int(1323574039)
["blksize"]=>
int(4096)
["blocks"]=>
int(8)
}
我想我在配置中做错了什么,但还没有完全弄清楚它是什么。
更令人兴奋的是,尽管 file_exists 不起作用fread(fopen('/home/www/public_html/index.html','r'), filesize('/home/www/public_html/index.html'))
确实返回文件的内容。
奇怪的是,这里有一些可以从手册中检查的选项:
Note: The results of this function are cached. See clearstatcache() for more details.
或者这可能是:
Warning
对于由于安全模式限制而无法访问的文件,此函数返回 FALSE。但是,如果这些文件位于 safe_mode_include_dir 中,则仍然可以包含它们。
这是我能想到的唯一可能影响它的事情。不确定你是否尝试过,但值得一试。
UPDATE
文件标志怎么样?从 shell(如果您有 shell 访问权限)您可以执行以下操作吗ls -alh /home/www/public_html | grep index.html
并确保其上没有设置奇怪的标志?
UPDATE 2
问题在于目录权限已设置,因此所有者无法查看目录内容。评论里有进一步解释
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)