Итак, задача: Надо сделать так, чтобы ошибки апача писались в логи апача, а ошибки PHP писались в логи php. По умолчанию, если в php.ini директива error_log не существует, или закоментирована, то все ошибки PHP будут писаться в стандартный лог апача, опять же, если он тоже включен, ведь может быть такая ситуация, когда и ошибки апача никуда не пишутся :). И еще момент, надо также сделать чтобы все это было применимо к нашим виртуальным хостам. Приступим.
Правим php.ini:
#по умолчанию ставим логирование только важных, критичных ошибок error_reporting = E_WARNING #Отключаем отображение ошибок в браузере display_errors = Off display_startup_errors = Off #Включаем логирование ошибок в файл (куда - укажем ниже) log_errors = On #Указываем максимальный объем файла логов, более ранние записи будут удаляться log_errors_max_len = 1024 #Путь, куда будет сохраняться лог ошибок error_log = "/www/log/php_errors.log" #Фиксировать ошибки об утечках памяти (лучше отключить) report_memleaks = Off
Правим httpd.conf:
#Устанавливаем уровень информативности логируемых ошибок #их есть немного: emerg, alert, crit, error, warn, notice, info, debug, от самого критичного до самого информативного LogLevel crit #Указываем путь, куда будут складываться логи апача (не для виртуальных хостов) ErrorLog "/www/log/httpd-error.log" #Устанавливаем формат записи ошибок <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "/www/log/httpd-access.log" combinedio </IfModule>
Правим виртуальный хост:
Открываем файл виртуальных хостов, это может быть /usr/local/etc/apache22/extra/httpd-vhosts.conf
#У меня виртуальные хосты основаны на именах, то есть NameBased <VirtualHost *:80> .... #Устанавливаем уровень информативности логирования ошибок для данного виртуального хоста LogLevel warn #Указываем путь к файлу логов ошибок апача данного виртуального хоста ErrorLog "/www/sites/siza.100.org.ua/log/error.log" #Указываем куда мы будем складировать статистику заходов на наш виртуальный хост, и уровень информативности #combinedio - определяется в файле httpd.conf (версия apache 2.2) CustomLog "/www/sites/siza.100.org.ua/log/access.log" combinedio #Указываем, куда должны складироваться ошибки PHP php_value error_log "/www/sites/siza.100.org.ua/log/php_errors.log" #Объем файла ошибок PHP php_value log_errors_max_len 2048 .... </VirtualHost>
Вот и все! Поздравляю, теперь ваши ошибки PHP будут писаться для каждого виртуального хоста в свою определенную папочку и свои файлы логов, а ошибки и статистика заходов с apache – в свои файлы логов.