PHP:is_file() 和 file_exists() 在同一个文件上返回不同的结果

标签 php file-exists

我遇到 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

This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir.

这些是我能想到的唯一可能影响它的东西。不确定您是否尝试过,但值得一试。

更新

文件标志怎么样?从 shell(如果你有 shell 访问权限)你能做一个 ls -alh/home/www/public_html | grep index.html 并确保没有在上面设置奇怪的标志?

更新 2

问题是设置了目录权限,因此所有者无法查看目录内容。评论中有进一步解释

关于PHP:is_file() 和 file_exists() 在同一个文件上返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461332/

相关文章:

python - 使用 python 和 http 函数检查网络服务器中是否存在文件夹

php - file_exists 似乎无法正常工作

php - 当涉及虚拟文件夹时,服务器变量文档根与 file_exists 配合不佳

php - mysqli_connect()如何在PHP中工作?

php - 无法从选项值获取 html 数据

php - 有条件地运行 php 代码

php - 使用 xml 将 javascript 变量发布到服务器

php - 访问 Laravel Queued Job 的负载数据

php检查文件名是否存在,重命名文件

vim - 如何检测 Vimscript 中是否存在特定文件?