【发布时间】:2011-11-21 23:12:01
【问题描述】:
PHP error_log 方法不会将错误写入自定义错误日志文件。它只会写入 /var/log/apache2/php_error.log
这是我php.ini 中的日志记录设置:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
log_errors = On
log_errors_max_len = 0 ; also tried with 9999999
error_log = /var/log/apache2/php_errors.log
PHP 将其错误写入常规 Apache 错误日志 (/var/log/apache2/error.log),而不是我在上面指定的那个。
我已经尝试过的事情:
- 更改 php.ini 文件后,我停止并重新启动了 apache
- 文件
/var/log/apache2/php_errors.log是777权限,文件存在。 - 没有其他覆盖 php.ini 文件。 (有 /etc/php5/cli/php.ini 但我没有使用 cli)。
- 在 php.ini 文件中没有其他 error_log = xxx 设置可以推翻第一个设置
- phpinfo() 表示 error_log = /var/log/apache2/php_errors.log(即正确的文件),在本地值和主值下都有
- 我用来生成错误的测试脚本不包含任何 ini_set 调用
(仅供参考:我在 Ubuntu 11.04 上使用 Apache/2.2.17 和 PHP/5.3.5-1ubuntu7.2)
我做错了什么?
【问题讨论】:
-
您是否尝试将文件名更改为其他名称?还是试试其他文件夹?
-
检查加载了什么 php.ini 文件(查看 phpinfo() 函数的输出)
-
感谢 Olli,我将其更改为 /usr/php_errors.log,现在可以使用了!
-
很可能,您指定的日志文件或其所在文件夹的权限设置不正确,无法让 PHP 访问该文件。
-
我没有看到 PHP 代码,但有几个可能性: 1. 该设备已满。 2. 封闭目录缺少执行位,因此如果 PHP 正在检查文件是否存在;那将失败。简单的解决方案:[确保您的网络服务器用户可以 rwx 目录和 rw 文件]。