Как записать ошибку php в отдельный файл?
Я только что обновил свой сервер до Fedora 17 и объединил некоторые файлы конфигурации, содержащие .rpmnew
в существующие. Я успешно регистрирую мои ошибки php в отдельном файле журнала, сохраняя следующее в php.ini
:
log_errors = On
error_log = /var/log/php-errors.log
Я не уверен, почему ошибки регистрируются в /var/log/httpd/error_log
после обновления, несмотря на сохранение настроек выше.
Также,
$ ls -l /var/log/php-errors.log
-rwxrwxr--. 1 apache myself 232 Dec 13 16:49 /var/log/php-errors.log
показывает, что apache владел файлом журнала ошибок php.
Что может быть причиной того, что ошибки PHP регистрируются в файле журнала ошибок apache?
1 ответ
Я думаю, что здесь только общие ошибки Apache, которые видны в /var/log/httpd/error_log
,
Я бы вставил вызов error_log('test');
в некоторую логику PHP, которая, как известно, интерпретируется, когда обновляется какая-то конкретная страница, и если это не видно в /var/log/php-errors.log
тогда я подозреваю, что версии обновлены, чтобы иметь какую-то другую конфигурацию или схему разрешений, из-за которой старая конфигурация перестала работать.
Я бы рекомендовал пройти через раздел "Обработка ошибок и ведение журнала" в /etc/php/php.ini
и проверка правильности значений для других директив. Директива error_reporting
должен быть установлен в E_ALL
или же E_ALL & ~E_DEPRECATED & ~E_STRICT
, Директива log_errors
должно быть On
,
Если для файла указано только имя файла (но без пути) error_log
тогда файл появится в том же каталоге, что и скрипт PHP, который вызывает error_log(...)
,
Я также рекомендовал бы указать /tmp/php_error_log
за error_log
, обновляя страницу, а затем ls /tmp
чтобы увидеть, если файл там.
Если файла нет, войдите в систему как root и выполните поиск по имени файла во всей файловой системе, чтобы увидеть, где он оказался.
Как правило, правильная конфигурация для работы журнала ошибок PHP в определенном каталоге изменяется в разных версиях Apache, PHP и различных дистрибутивах.
Я могу сказать, что в Arch Linux с Apache 2.4, PHP 5.5.11 и systemd версии 212-1 приведенная выше конфигурация приведет к тому, что журнал ошибок PHP окажется где-то похожим на /tmp/systemd-private-65d4c3e3cc534155bcf3ec708c2362f6-httpd.service-h8MSsD/tmp/php_error_log
,