-1

我在本地主机上工作。我有 php 5.4.4。我刚刚在 php.net 上读到,从 5.4 版开始,E_STRICT 成为 E_ALL 的一部分。

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

error_reporting = E_ALL

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

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

我还设置了:display_errors = On

所以,我假设当脚本运行时,我的浏览器会报告任何错误。但是,什么也没有发生。

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

4

3 回答 3

2

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

也就是说,您将display_errors设置为false,并将log_errors设置为true

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

于 2012-09-23T18:18:59.607 回答
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 );
  }
于 2012-09-23T18:20:13.993 回答
0

这个问题有点难以追踪。如果您想查看带有显示错误的实际错误消息,则必须牢记以下几点:

display_errors指令仅在它可以输出到某些显示器时才起作用。

通常,当您的脚本已经完成并且不再有与之关联的输出时,会话会保存在磁盘上。

因此,您无法使用该设置使以下通知可见:

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

0 行的 Unknown表示这不是正常的 PHP 代码。只是当 PHP 引擎关闭并保存会话数据时。

因此除非:_

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

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

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

于 2012-09-23T18:21:57.587 回答