Перехват ошибок PHP веб-сервером

Модератор: Модераторы разделов

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Перехват ошибок PHP веб-сервером

Сообщение serzh-z »

Нужно что бы Apache не перехватывал вывод error_log() из скриптов PHP (вызовы error_log делаются из кода скриптов явно). Это возможно без костыля в виде "ini_set('error_log', '/dev/null');"?

В коде существует переключалка, которая должна включать/отключать логирование в кастомный лог. В случае если сделан вызов "ini_set('log_errors', 0);", то все ошибки валятся в лог Apache - нужно, чтобы в этом случае они вообще никуда не валились.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Перехват ошибок PHP веб-сервером

Сообщение KiWi »

serzh-z, ты всё-таки лентяй
; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = Off

; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
error_reporting = 0


Как минимум одно из двух должно заработать.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Перехват ошибок PHP веб-сервером

Сообщение serzh-z »

Не спеши с ярлыками. В данной ситуации это ты поленился проверить собственные предположения.

Я же выше написал, что при log_errors=0, ошибки все равно перенаправляются в лог Apache.

Код: Выделить всё

<?
ini_set('log_errors', 0);
error_reporting(0);
error_log('PREVED;]');
?>
Заставит Apаche записать в error_log сообщение. Спасает лишь "ini_set('error_log', 'nul');" (nul, вместо /dev/null - потому что Apache/PHP на винде).
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Перехват ошибок PHP веб-сервером

Сообщение KiWi »

А, ну да.

error_log не перехватывается.
Некритические ошибки нужно писать через trigger_error.
Спасибо сказали:
Аватара пользователя
rws
Сообщения: 206
ОС: Ubuntu 7.10

Re: Перехват ошибок PHP веб-сервером

Сообщение rws »

Попробуй так:

Код: Выделить всё

error_reporting(0);
if (function_exists('ini_set')) {
    ini_set("display_errors", 0);
    ini_set("log_errors", 0);
    ini_set("html_errors", 0);
    ini_set("ignore_repeated_errors", 1);
    ini_set("ignore_repeated_source", 1);
}
AMD Athlon 64 X2 4200+/2GB RAM/250GB HDD/GeForce 7600GT 256MB/ZyXEL P-660RT EE
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Перехват ошибок PHP веб-сервером

Сообщение serzh-z »

rws писал(а):
12.04.2007 15:36
Попробуй так:
Типа все и сразу - авось прокатит... :) На всякий случай попробовал - не прокатило, как и ожидалось. В общем х. с ним. Решил с помощью "ini_set('error_log', 'nul');", результат устраивает - надо в Линуксе попробовать, а то может это глюк/особеннось используемых виндовых версий Apache/PHP, а может просто я не совсем правильно понимаю документацию про параметр log_errors в PHP.
Спасибо сказали:
Аватара пользователя
rws
Сообщения: 206
ОС: Ubuntu 7.10

Re: Перехват ошибок PHP веб-сервером

Сообщение rws »

Типа все и сразу - авось прокатит...

Да нет :) Достаточно только этого в скрипте:

Код: Выделить всё

ini_set("log_errors", 0);
или этого в php.ini:

Код: Выделить всё

log_errors = Off
AMD Athlon 64 X2 4200+/2GB RAM/250GB HDD/GeForce 7600GT 256MB/ZyXEL P-660RT EE
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Перехват ошибок PHP веб-сервером

Сообщение KiWi »

rws писал(а):
12.04.2007 19:54
Да нет :)

Совет -- читать тему перед ответом: http://linuxforum.ru/index.php?s=&show...st&p=377220

P.S.: serzh-z, а в чём проблема-то поreplaceть error_log на trigger_error?
Просто, ИМХО, error_log создавать как функция для модулей(где она используется для критических ошибок) и в php её выкинули просто из-за того, что не впадлу было :-)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Перехват ошибок PHP веб-сервером

Сообщение serzh-z »

Про trigger_error не знал. Забавная вещь, хотя и не совсем то (слишком много мусора в лог пишет, в отличии от error_log), а так же потребует пересмотра всего существующего кода.

Заодно выяснил по коду PHP, что директива "log_errors = Off" не отключает вывод всех ошибок, отправленных через функцию error_log(), а всего лишь отдает их на обработку SAPI-модулю Apache/PHP (SO/DLL: php_apache2).
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Перехват ошибок PHP веб-сервером

Сообщение KiWi »

Спасибо сказали: