Странное поведение file_get_contents () с простыми текстовыми файлами и без расширения? - PullRequest
0 голосов
/ 24 октября 2011

Последние несколько дней я работал над локальным приложением и заметил, что одна из моих функций exec () для вызова внешней программы не сработала корректно.После дальнейшего изучения было очевидно, что программа действительно выполнялась, но преждевременно завершала работу, поскольку важная строка, использующая file_get_contents (), не извлекала содержимое указанного файла.

Файл представляет собой обычный текстовый файл без расширения.Я предполагаю, что file_get_contents () обрабатывает файл как каталог, так как нет расширения?Это странно, потому что, если я вручную запускаю ту же программу из веб-браузера, все работает отлично.

Вот пример строки для ясности -

while(file_get_contents('plaintextfile') == "something"){
/// Do This
    }

Вышеприведенное прекрасно работает, когда я захожу /program.php из веб-браузера, но при его вызове он выдает ошибку «файл / папка не найдена» для «plaintextfile».

exec('php /program.php', $output);

foreach($output as $output){
print $output . "<br>";
}

Заранее спасибо всем, кто может пролить свет на этоситуация.Я действительно озадачен этим ...

1 Ответ

1 голос
/ 24 октября 2011

PHP, выполняемый из браузера и выполняемый из командной строки (при вызове exec()), может использовать разные конфигурации php.ini и может иметь разные пути поиска файлов. Лучший способ действий - указать полный путь к plaintextfile.

if(!file_get_contents('/path/to/plaintextfile')){
   // file couldn't be read
}
...