On Sat, 31 Jul 2010, Alexander Farber wrote:
To: CentOS mailing list centos@centos.org From: Alexander Farber alexander.farber@gmail.com Subject: [CentOS] Redirecting PHP error messages into a log file
Hello,
I'm using CentOS release 5.5 x86_64 with the stock php-5.1.6-27.el5 and would like to redirect PHP messages into /var/log/httpd/php_log
First I tried adding that file name to /etc/php.ini: error_log = "/var/log/httpd/php_log" and restarted httpd, but the file didn't appear. I've touched it and changed owner to apache.apache, but that didn't help.
It's a bit tricky setting up PHP error logging to a seperate file. This works for me on 32bit, Centos 5.5 and Fedora 12, and previous Fedora versions.
Here are my settings:
SELinux disabled at boot time.
/etc/php.ini file:
; Besides displaying errors, PHP can also log errors to locations such as a ; server-specific log, STDERR, or a location specified by the error_log ; directive found below. While errors should not be displayed on productions ; servers they should still be monitored and logging is a great way to do that. ; Default Value: Off ; Development Value: On ; Production Value: On ; http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors log_errors = ON
; Set maximum length of log_errors. In error_log information about the source is ; added. The default is 1024 and 0 allows to not apply any maximum length at all. ; http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors-max-... log_errors_max_len = 1024
; Do not log repeated messages. Repeated errors must occur in same file on same ; line unless ignore_repeated_source is set true. ; http://www.php.net/manual/en/errorfunc.configuration.php#ini.ignore-repeated... ignore_repeated_errors = Off
; Ignore source of message when ignoring repeated messages. When this setting ; is On you will not log errors with repeated messages from different files or ; source lines. ; http://www.php.net/manual/en/errorfunc.configuration.php#ini.ignore-repeated... ignore_repeated_source = Off
; Log errors to specified file. PHP's default behavior is to leave this value ; empty. ; http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log ; Log errors to syslog or specified file (Event Log on NT, not valid in Windows 95). ;error_log = syslog error_log = /var/log/apache/php_error_log
The file permissions for my php error log are:
[root@karsites apache]# ls -l php* -rw-rw-rw- 1 root root 91472 2010-07-31 08:00 php_error_log -rw-rw-rw- 1 root root 0 2008-05-29 13:30 php_error_log.skel -rw-rw-rw- 1 root root 0 2008-05-29 13:30 php_mail_log [root@karsites apache]#
If the PHP error log file is not set up correctly, then PHP will just output the errors to the apache error log file instead.
HTH
Keith Roberts