Журнал ошибок Apache 2 показывает только сообщение об ошибке 0

В течение нескольких дней мой журнал ошибок Apache 2 показывает много сообщений, подобных следующему (IP-адреса и URI отредактированы):

[Thu Dec 12 13:46:42 2013] [error] [client 111.222.333.444] 0
[Thu Dec 12 13:52:27 2013] [error] [client 222.333.444.555] 0, referer: http://www.mydomain.com/
[Thu Dec 12 13:52:27 2013] [error] [client 222.333.444.555] 0, referer: http://www.mydomain.com/
[Thu Dec 12 13:53:54 2013] [error] [client 333.444.555.666] 0, referer: http://www.mydomain.com/subdirectory/
[Thu Dec 12 13:46:42 2013] [error] [client 444.555.666.777] 0
[Thu Dec 12 13:54:07 2013] [error] [client aaaa:1111:2222:ffff::] 0, referer: http://www.otherdomain.com/subdirectory/

Что это 0? Других сообщений не показывается (кроме иногда каких-то других, нормальных сообщений, но очень редко).

IP-адреса бывают IPv4 и IPv6. Я проверил журнал доступа на ту же дату/время и IP-адреса. В большинстве случаев с этого IP-адреса для разных URI на моей веб-странице был доступ в один и тот же момент. Но иногда, согласно журналу доступа, доступа не было.

Это среда общего хостинга, поэтому я не могу получить доступ к настройкам Apache (но у меня есть доступ по ssh к моему домашнему каталогу, если это поможет). Я уже гуглил и искал документацию Apache, но ничего не нашел (трудно искать "0"...)

/edit: Я также спросил веб-хостинга, они сказали, что не знают, что это вызывает. Я перепроверил это с помощью журнала доступа Apache, это запросы к PHP-скриптам (в основном Joomla), а также запросы к изображениям, а также к файлам JS и CSS. Поэтому я предполагаю, что это не PHP-скрипт, который вызывает это.


person Reeno    schedule 12.12.2013    source источник
comment
Существуют ли файлы .htaccess, в которых может быть указана директива LogFormat?   -  person klugerama    schedule 08.01.2014
comment
Не от меня. Возможно, хостер добавил что-то в httpd.conf, но в этом случае хостер знал бы и мог бы мне помочь.   -  person Reeno    schedule 08.01.2014


Ответы (2)


Если ваша директива error_log не установлена, ошибки будут записаны в ваш файл журнала Apache для текущего виртуального хоста. Поэтому дважды проверьте свою конфигурацию PHP (php.ini) или напишите простой страница с phpinfo()

Если это так, вам следует заглянуть внутрь своего кода (может быть, даже в index.php).

Обратите внимание: обычно есть два отдельных файла php.ini для конфигурации Apache /etc/php5/apache2/php.ini и CLI /etc/php5/cli/php.ini.

Также учтите, что если вы хотите изменить конфигурацию PHP, вы можете использовать ini_set функция.

ini_set('error_log', '/var/log/php/error_new.log');

Помните: каталог назначения должен существовать, и ваш веб-сервер (или php-движок) должен иметь все права на запись.

person freedev    schedule 15.01.2014
comment
У меня нет доступа к php.ini, потому что это общая среда хостинга, но phpinfo() указывает no value вместо error_log. В консоли администратора я могу настроить, должны ли ошибки PHP записываться в журнал ошибок Apache, и он включен. Я никогда раньше этого не видел... Я выключу его и буду следить за журналом ошибок Apache. - person Reeno; 15.01.2014
comment
Но когда я сравниваю время доступа к журналу ошибок с журналом доступа, иногда нет никаких обращений в секунду, когда регистрируется ошибка. Я не думал, что эти PHP-скрипты работают дольше секунды - person Reeno; 15.01.2014
comment
Я обновил ответ. Пожалуйста, рассмотрите предложение ini_set. Вы можете изменить PHP error_log в основную конфигурацию вашего веб-приложения. - person freedev; 15.01.2014
comment
Спасибо! Я добавил ini_set('error_log', '...'); в основной PHP-скрипт, и теперь 0 регистрируются в этом файле. Теперь мне нужно искать основную причину, но, по крайней мере, я знаю, что это Joomla, а не Apache. - person Reeno; 15.01.2014

Формат error_log не настраивается, я подозреваю, что его можно установить на более высокий уровень: отладку или трассировку, где он может выдавать дополнительную информацию.

Также примите во внимание, что error_log содержит отладочную информацию из сценариев CGI/PHP/Perl, поэтому «ноль» может быть получен каким-либо сценарием, который выполняется через apache в качестве его модуля.

person swserg    schedule 09.01.2014
comment
Согласно access.log, при возникновении ошибки вызывается несколько PHP-скриптов. Иногда это Joomla, иногда один из моих собственных скриптов, иногда даже только файлы изображений/CSS/JS. Поэтому я сомневаюсь, что это вызвано некоторыми из моих сценариев. Я все еще предполагаю, что хостер что-то сделал с конфигурацией. - person Reeno; 14.01.2014
comment
пожалуйста, внимательно перечитайте мой ответ, error_log нельзя настроить, пока ваш хостер не использует веб-сервер apache, если это nginx или что-то еще, то он может быть другим. Если вы хотите выяснить основную причину этих сообщений, вам нужен root-доступ к серверу, на котором работает apache, и strace httpd обрабатывает, когда появляются эти сообщения. Но, скорее всего, 0 - это код возврата ошибки или сообщение от какой-то функции php-скрипта. - person swserg; 14.01.2014
comment
Я понял твой ответ. Мой ответ относился к вашему второму абзацу. Вызывается не один скрипт PHP, это PHP, изображения, CSS... К сожалению, у меня нет root-доступа, поэтому я не могу проверить процессы httpd. - person Reeno; 14.01.2014
comment
по крайней мере, вы можете попросить об этом свою службу поддержки хостера. - person swserg; 14.01.2014