обработка ошибок fopen()

#php #error-handling

#php #обработка ошибок

Вопрос:

В данный момент я работаю над сценарием, который считывает HTML файл шаблона, заполняет его данными, а затем сохраняет заполненный HTML файл как кэшированную копию в моей папке кэша.

У меня возникают реальные трудности с оценкой того, произошла ли ошибка fopen() , в то время как ошибки времени выполнения подавляются:

 $file = @fopen($location,"w "); 

// manual states fopen() returns false on error
// though the below does not catch any errors 

if (!$file) {
    $this->doSomething();
}
 

Работает ли подавление против меня? Я был бы очень признателен за некоторое представление об этом. Я попытался настроить error_reporting отображение ошибок,

 ini_set('display_errors',0);
ini_set('log_errors',1);
error_reporting(E_ALL);
 

и удалил подавление из fopen() , но безрезультатно.

Ответ №1:

Ваш код должен работать. Если вы никогда не вводите if инструкцию и не вызываете ошибок, файл был открыт успешно. Почему вы уверены, что fopen() вызов не удался?

Комментарии:

1. Я намеренно настроил его на сбой с поддельным местоположением $, чтобы проверить наличие ошибки, но ничего… возможно, мне нужно взглянуть на мой PHP ini-файл. Спасибо, что изучил это, Дэйв.

2. Имейте в виду, что когда вы открываете файл в w режиме mode, он создаст файл, если он не существует, поэтому на самом деле сбой может и не произойти. Попробуйте использовать фиктивное местоположение и r или r , и это приведет к сбою, или попробуйте открыть файл в каталоге, который не существует, и это приведет к сбою. Насколько я знаю, нет настроек ini для управления этим поведением — если у вас все еще возникают проблемы, когда вы делаете что-то, что на 100% наверняка не должно работать, что-то (очень странное) не так с вашей установкой PHP…

3. Спасибо, Дэйв, я использовал r , и действительно, он начал давать сбой. Затем я заметил, что файл был создан с помощью w в моем корневом каталоге. Спасибо, что указали на это и помогли!