【问题标题】:PHP error_log: Won't write to specified filePHP error_log:不会写入指定文件
【发布时间】:2010-11-23 14:51:33
【问题描述】:

在我的 Win XP Pro 系统上的 IIS 下运行 PHP。我无法轻松调试我的脚本,因为让 PHP 写入我指定的错误日志。以下是相关的(我认为)php.ini 条目:

error_reporting = E_ALL & E_STRICT display_errors = 关闭 log_errors = 开启 error_log = "c:/php5/log/php.log"

我之前在 Windows/DOS 上使用过斜线。无论哪种情况,它都没有写入该目录中的文件 php.log。日志文件是IUSR_SERVERNAME可写的,目录是IUSR_SERVERNAME可写的,父目录是IUSR_SERVERNAME可写的。我确定我错过了一些愚蠢的东西。

有什么建议吗?

【问题讨论】:

  • 我发现了问题。我更新了我的答案。告诉我进展如何

标签: php iis error-log


【解决方案1】:

你试过php文件本身吗?

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', "c:/php5/log/php.log");

更新: 问题是您使用的是按位与,而您应该使用按位或

试试这个

var_dump(E_ALL);
var_dump(E_STRICT);
var_dump(E_ALL | E_STRICT);
var_dump(E_ALL & E_STRICT);

输出: int(6143) int(2048) int(8191) int(0)

所以基本上你在写

error_reporting  =  0

有效地关闭错误报告。 将 & 更改为 |在你的 php.ini 中,你应该没问题。

【讨论】:

  • 有点错过了在 INI 文件中的意义,但我会试试看。
  • 不应该是error_reporting = E_ALL | E_STRICT 而不是 error_reporting = E_ALL & E_STRICT?我认为 E_ALL 和 E_STRICT 的 & 将返回全零
  • 就是这样,非常感谢!当然,它并没有记录与初始问题相关的错误,但这是我必须弄清楚的安全问题,与错误日志无关。
  • 一个有趣的旁注:我刚刚取消了该行的注释,所以最初的 PHP.ini 文件有误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多