У меня проблема, когда 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.
Это единственное, что я могу думать о том, что это могло бы произвести это. Не уверен, что вы пробовали это или нет, но стоит того.
ОБНОВИТЬ
Как насчет флагов файла? Из оболочки (если у вас есть доступ к оболочке) вы можете сделать ls -alh /home/www/public_html | grep index.html
ls -alh /home/www/public_html | grep index.html
и убедитесь, что флаг не задан на нем странным?
ОБНОВЛЕНИЕ 2
Проблема в том, что права доступа к каталогу были установлены таким образом, чтобы владелец не смог просмотреть содержимое каталога. Это объясняется далее в комментариях
См. Предупреждение в file_exists()
:
Эта функция возвращает
FALSE
для файлов, недоступных из-за ограничений безопасного режима. Однако эти файлы могут быть включены, если они находятся вsafe_mode_include_dir
.
Функция is_file()
, похоже, не имеет этого ограничения.