我在 Linux Mint 13 Maya 上运行带有 php5 的 apache2。我定义了一个虚拟主机和以下两个条目:
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 日志中。
我在这里遗漏了什么?
答案1
权限可能不足以写入该文件;您还必须确保该目录也可以访问。
例如它在我的系统上的情况(这是标准的 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:首先,我遇到了和你一样的问题,一天之内无法解决。谷歌搜索一无所获。考虑在 serverfault 上写一个问题。在准备标题时,我得到了建议,你的是第二个。我意识到我会写一个重复的问题,所以我想在你的问题上写一条评论。但后来我想写更多,并考虑写一个答案,虽然不能解决问题,但也能引出我的观点,也许其他人可以提供帮助。在准备答案时,我发现了解决方案。这绝对是太棒了……好吧,这里的任何事情。serverfault/stackexchange 在其他人的帮助下帮助我自己找到了解决方案。我想不可能再好了(除了自己解决问题)。