Разрешение файла 755, но PHP file_exists() возвращает false

У меня есть файл изображения на моем хостинге.

  • FileZilla говорит, что у него есть разрешение 755 (-rwxr-xr-xr)

тем не мение:

  • file_exists($path) возвращает ложь

возможный источник проблемы:

  • PHP может по какой-то причине прочитать права доступа неправильно - пример PHP-руководства по чтению прав доступа к файлу ( функция fileperms($path) ) говорит, что файловые права -rwxr-xr-x

ПРИМЕЧАНИЕ! Файл доступен из веб-браузера - если я напечатаю путь к файлу, поскольку изображение <img> src отображается нормально... также is_file($path) возвращает true

Любые идеи, что может вызвать эту проблему? :)

EDIT1&2: BTW: путь проверки PHP: './subfolder/subfolder2/filename.jpg', адрес файла браузера - 'mydomain.com/testfolder/subfolder/subfolder2/filename.jpg' - основной скрипт (который включает в себя другой скрипт, который выполняет существующий файл) находится в «тестовой папке» - есть ли проблемы с этим?

Текущая папка (getcwd()) "/data/web/virtuals/87454/virtual/www/testfolder" fopen($path) НЕ возвращает логическое значение false, а также НЕ вызывает никаких ошибок


person jave.web    schedule 14.12.2013    source источник


Ответы (1)


file_exists не проверяет разрешения. Если он возвращает false, вы проверяете неправильный путь. Особенно, если это то же самое, что и в браузере.

person Your Common Sense    schedule 14.12.2013
comment
РУКОВОДСТВО по PHP для file_exists: Предупреждение Эта функция возвращает FALSE для файлов, недоступных из-за ограничений безопасного режима. Однако эти файлы по-прежнему могут быть включены, если они расположены в safe_mode_include_dir. - person jave.web; 14.12.2013
comment
Так? о каком безопасном режиме вы говорите? - person Your Common Sense; 14.12.2013
comment
По моему опыту, file_exists может возвращать false, если файл не имеет разрешения на чтение для скрипта, выполняющего функцию file_exists. - person jave.web; 14.12.2013
comment
НЕТ магии. если file_exists говорит, что файла нет - его нет. так просто. проверьте свой путь. echo getcwd(), чтобы увидеть текущий каталог. - person Your Common Sense; 14.12.2013
comment
Текущая папка - /data/web/virtuals/87454/virtual/www/testfolder - тогда все в порядке? - person jave.web; 14.12.2013
comment
должно быть хорошо. попробуйте открыть его и увидеть сообщение об ошибке. если он говорит, что такого файла нет - вам нужно проверить свое помещение. - person Your Common Sense; 14.12.2013
comment
болтать не о чем. - person Your Common Sense; 14.12.2013
comment
ОК - fopen($path) НЕ возвращает логическое значение false, а также НЕ вызывает никаких ошибок - person jave.web; 14.12.2013
comment
ждать. вы сказали, что fileperms($path) все правильно открыл и вернул права? это звучит странно. Что говорит is_readable()? - person Your Common Sense; 14.12.2013
comment
Лол, это была ОПЕЧАТКА! (n вместо m в переменной x) - мне удалить этот вопрос? (но спасибо, я понял это из-за ваших комментариев:)) - person jave.web; 14.12.2013