#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 в моем корневом каталоге. Спасибо, что указали на это и помогли!