2015-02-11 2 views
0

Я получаю довольно странные ошибкиfile_get_contents не удалось не удалось открыть поток: Нет такого файла или каталога

file_get_contents('/var/www/site/config/../runtime/cookies/1a8dd816aafc1118dc5cbf7fd0263f20/cookie.txt'): failed to open stream: No such file or directory 

Так что я изменил код:

if (file_exists($cookie_file)) { 
    echo file_get_contents($cookie_file); 
} else { 
    echo "$cookie_file does not exist\n"; 
} 

И это выводит:

/var/www/site/config/../runtime/cookies/1a8dd816aafc1118dc5cbf7fd0263f20/cookie.txt does not exist 

В командной строке, если я делаю

cat /var/www/site/config/../runtime/cookies/1a8dd816aafc1118dc5cbf7fd0263f20/cookie.txt 

It кошек файл, просто отлично

Разрешения тоже хорошо:

ls -lrt /var/www/site/config/../runtime/cookies/1a8dd816aafc1118dc5cbf7fd0263f20/cookie.txt 
-rwxrwxrwx. 1 apache apache 391 Feb 11 16:27 /var/www/site/config/../runtime/cookies/1a8dd816aafc1118dc5cbf7fd0263f20/cookie.txt 

Так что да, я достаточно запутана, почему он не будет читать файл, который явно существует.

Любые идеи?

+0

У файла может отсутствовать разрешение на чтение/запись. –

+0

Его '..', что дает вам неприятности. – dan08

+0

/var/www/site/config/../? Что такое /../? –

ответ

0

Используйте realpath, чтобы расширить относительный путь к абсолютной траектории. .. между config и runtime в пути означает его относительный, в то время как file_get_contents требуют абсолютного.

Смежные вопросы