Обновление:
Согласно @mpc в комментариях к этому ответу, ошибки отображаются в браузере при включенном display_errors
, но не появляются вжурнал.Я предполагал, что ошибки вообще не появляются.
Являются ли ошибки E_NOTICE
единственными, которые не появляются в журнале, или все типы ошибок затрагиваются?Если это все типы ошибок, то первое, что я хотел бы проверить, - включено ли ведение журнала ошибок.Попробуйте установить ini_set('log_errors', 'On');
в верхней части вашего скрипта.Если это не сработает, попробуйте установить в файле журнала что-то, что вы уверены , на который ваш сервер может писать, позвонив по номеру ini_set('error_log', 'your_file_path');
.Если ничего из этого не работает, то я думаю, что что-то не так с вашей установкой PHP.Если какое-либо из этих исправлений работает, вы можете поместить их в свой фактический php.ini
, если у вас есть доступ.
Оригинальный ответ:
На основе error_reporting
уровень в вашем вопросе, ваша установка PHP уже должна быть настроена для сообщения E_NOTICE
ошибок.Если это не регистрирует эти ошибки, что-то не так.Я бы предложил включить display_errors
, чтобы увидеть, отображаются ли какие-либо ошибки E_NOTICE
.Если вы не можете изменить файл php.ini
, попробуйте запустить ini_set('display_errors', 'On');
вверху вашего скрипта.Очевидно, что эти ошибки будут отображаться и / или регистрироваться только в том случае, если вы их активируете, поэтому вам следует дважды проверить, что вы на самом деле это где-то делаете.
Одно предостережение: уровень ошибок E_DEPRECATED
был тольковведено в PHP 5.3.Когда я только что протестировал установку E_DEPRECATED
при установке PHP 5.2, PHP ответил с ошибками и установил уровень error_reporting
на 0
, что означает, что он сообщает без ошибок .Хотя для файла до версии 5.3 php.ini
не имеет смысла использовать этот параметр, я считаю важным хотя бы повысить вероятность того, что вы используете E_DEPRECATED
на сервере, который его не поддерживает.Если вы не уверены в своей версии, вы можете запустить phpinfo()
, и она отобразит страницу с большим количеством информации, включая номер версии для вашей установки.
Несмотря на вышесказанное, если я 'Если вы неправильно поняли ваш вопрос, а вы говорите только о создании собственной настраиваемой регистрации, вам нужно создать функцию для запуска при возникновении ошибки и назначить ее в качестве обработчика ошибок с помощью функции set_error_handler()
.
Важно отметить, что когда вы используете set_error_handler()
, вы полностью игнорируете обработчик ошибок PHP.Это означает, что ваш уровень error_handler
становится бессмысленным.Все ошибки, независимо от их серьезности, будут переданы созданной вами функции обработчика ошибок.Первым параметром, переданным этой функции PHP, будет номер ошибки, который представляет собой числовое значение константы E_xxx
найденной ошибки.Вам нужно будет написать собственный код, чтобы перехватывать только те ошибки, которые вы хотите.
Например, чтобы поймать только E_NOTICE
ошибок, ваша функция будет выглядеть так:
function my_error_handler($errno, $errstr, $errfile, $errline) {
if ($errno == E_NOTICE) {
// handle/log the error
}
}
set_error_handler("my_error_handler");