Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP5.4.4中启用严格的错误报告_Php_Session - Fatal编程技术网

在PHP5.4.4中启用严格的错误报告

在PHP5.4.4中启用严格的错误报告,php,session,Php,Session,我在本地主机上工作。我有PHP5.4.4。我刚刚在php.net上读到,从5.4版开始,E_STRICT就成为E_ALL的一部分 因此,我在php.ini文件中看到了这一点 error_reporting = E_ALL 因此,我认为这是最严格的错误报告模式。所以,我故意犯了一个错误,看看这是否有效 我将$\u会话密钥设置为以代码中的数值开头。未报告任何错误。程序运行不正确 我还设置了:display\u errors=On 因此,我假设在运行脚本时,任何错误都将在我的浏览器中报告。但是,什么

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

因此,我在php.ini文件中看到了这一点

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

我将$\u会话密钥设置为以代码中的数值开头。未报告任何错误。程序运行不正确

我还设置了:
display\u errors=On

因此,我假设在运行脚本时,任何错误都将在我的浏览器中报告。但是,什么也没发生


其中一位同事Stackoverflow.com的成员在检查我的代码时发现了错误,因为他的浏览器报告了错误。但是,在我的PHP中什么也没有发生。

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

也就是说,您已经设置为
false
,并设置为
true


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

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

  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 );
  }

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

只有当有一些显示器可以输出时,它才能工作

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

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

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

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

因此,除非:

  • 您可以跟踪错误日志或使用CLI环境,该环境在关机阶段(STDOUT)仍有输出
  • 您可以使用
    session\u write\u close()
    在脚本仍在运行时编写会话:
注意:会话\写入\关闭():正在跳过。。。在线12


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

无论解决了什么问题(您本来应该使用数组作为值,但那是另一回事),给出的参数都是错误的。基于错误的信息,你在测试错误的东西,然后问错误的问题;)不管你在互联网上读到什么,都不要相信它。问题是,当我切换到以字母表开头的会话键时,我的问题就解决了。其次,我想要报告的错误没有显示为
error\u reporting(-1)也是。@Rohittripati:我现在可以完全重现这个问题,并为您添加一个解释。这应该给你一个解释。会话键不能只是数字(事实上它们可以,我已经看到了,但当前的PHP似乎阻止了它),但它们仍然可以以数字开头,后面是一些非数字字符。是我的错,我不知道如何重现它。