在PHP 5.4.4中启用严格错误报告

时间:2012-09-23 18:11:34

标签: php session

我在localhost上工作。我有PHP 5.4.4。我刚刚在php.net上看到,自5.4版开始,E_STRICT成为了E_ALL的一部分。

所以,我在php.ini文件中看到了这个。

error_reporting = E_ALL

所以,我认为,这是最严格的错误报告模式。所以,我故意弄错了,看看是否有效。

我设置$ _SESSION键以在我的代码中以数值开头。没有报告错误。该程序运行不正确。

我还设置了:display_errors = On

因此,我假设在运行脚本时,我的浏览器中会报告任何错误。但是,没有任何反应。

其中一位研究员,Stackoverflow.com会员,正在检查我的代码并发现错误,因为他的浏览器报告了错误。但是,我的一切都没有发生。

3 个答案:

答案 0 :(得分:2)

您可能已将PHP配置为不将错误输出到屏幕,而是将其记录到日志文件中。

即,display_errors设置为falselog_errors设置为true

这是生产网站的常见配置,不会将错误回显到屏幕(可能会泄露攻击者的重要信息),而是将其写入Web服务器日志。

答案 1 :(得分:0)

我建议您安装一个全局错误处理程序,并在那里进行一些格式化,以获得一个不错的结果:

  set_error_handler( 'error_handler' );

  function error_handler( $errno, $errmsg, $filename, $linenum, $vars )
  {    
    // error was suppressed with the @-operator
    if ( 0 === error_reporting() )
      return false;

    printf( "Unrecoverable error in `%s' line %s: %s\n\n", $filename, $linenum, $errmsg );

    exit( $errno );
  }

答案 2 :(得分:0)

问题有点难以跟踪。如果要查看显示错误的实际错误消息,则必须牢记以下几点:

display_errors directive只有在可以输出的显示内容时才有效。

通常,当您的脚本已经完成并且没有任何关联输出时,会话将保存在磁盘上。

因此,您无法使用该设置显示以下注意事项:

  

注意:未知:在第0行的“未知”中跳过数字键0

第0行的中的 表示这不是正常的PHP代码。就在PHP引擎关闭并保存会话数据时。

因此,您永远不会将此错误消息添加到您的显示上,除非

  • 您跟踪错误日志或使用在关闭阶段仍有输出的CLI环境(STDOUT)
  • 在脚本仍在运行时使用session_write_close()编写会话:
  

注意:session_write_close():在第12行的...中跳过数字键0

希望这有助于并完全澄清它。