Назад | Перейти на главную страницу

Не удается настроить журнал ошибок PHP

Я запускаю apache2 с php5 на Linux Mint 13 Maya. Я определил виртуальный хост и эти две записи:

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Это вызывает ошибку и доступ к журналам в var/log/apache2.

Я хочу, чтобы мои ошибки PHP записывались в журнал ошибок PHP. В моем /etc/php5/apache2/php.ini Я установил:

display_errors = On
log_errors = On
error_log = /var/log/php-errors.log
log_errors_max_len = 0
error_reporting =  E_ALL | E_STRICT

Файл журнала /var/log/php-errors.log был сгенерирован, но все, что он зарегистрировал, это два предупреждения о том, что некоторые модули уже загружены. Я попытался закомментировать директивы журнала в определении виртуального хоста, но это ничего не изменило, все ошибки по-прежнему регистрируются в журнале apache.

Что мне здесь не хватает?

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

Пример того, как это было в моей системе (это была стандартная установка Debian wheezy):

$ ls -ld /var/log/apache2/
drwxr-x--- 2 root adm 4096 Sep  4 15:59 /var/log/apache2/
$ ls -ld /var/log/apache2/php-error.log
-rw-r--r-- 1 www-data www-data 0 Jul 23 11:07 /var/log/apache2/php-error.log

Это не сработало, потому что каталог, содержащий php-error.log был недоступен. К счастью, mod_php (или apache2?) Возвращается, чтобы записать его в журнал ошибок VirtualHosts.

В моем случае это было легко исправить, применив chmod o+rx /var/log/apache2/ но ваши соображения безопасности могут отличаться. После исправления:

$ ls -ld /var/log/apache2/
drwxr-xr-x 2 root adm 4096 Sep  4 15:59 /var/log/apache2/

И с этим изменением это сработало.

PS: Во-первых, у меня была та же проблема, что и у вас, не мог решить ее за день. Поиск в Google ничего не дал. Думал написать вопрос по serverfault. При подготовке заголовка я получил предложения, и ваш второй хит. Я понял, что напишу повторяющийся вопрос, поэтому подумал, что напишу комментарий на ваш. Но потом я захотел написать больше и подумал о том, чтобы написать ответ, который не решит проблему, но также приведет к моей точке зрения, может быть, кто-то другой может помочь. И пока готовил ответ, я нашел решение. Это просто фантастика о ... ну, обо всем здесь. serverfault / stackexchange помог мне найти решение самостоятельно, неявно с помощью других. Думаю, не может стать лучше (кроме того, что решил это самостоятельно).