【问题标题】:PHP's session_start() conflicting with error_reporting()?PHP session_start() 与 error_reporting() 冲突?
【发布时间】:2012-09-03 16:49:58
【问题描述】:

当我阅读 php 手册中的错误处理时,有人发表了一条关于可能的冲突的有趣评论。这是链接:http://www.php.net/manual/en/errorfunc.configuration.php

基本上,它表示在 error_reporting() 之前调用 session_start() 会导致 error_reporting() 行为不正确。相反,必须颠倒顺序。我很好奇以前有人遇到过这个问题。

更重要的是,如果出现问题,会对课程产生什么影响?例如,如果我要使用涉及 error_reporting() 的特定错误处理系统来实现一个类(例如用户登录),是否会发生冲突?更具体地说,如果我有一个带有 session_start() 的文件,那么我会像上面所说的那样调用该类。

提前致谢。

【问题讨论】:

  • 我不知道这个问题,我也不信任 PHP.net 上的任何 cmets(很遗憾)。你能描述不正确的行为并提供一个测试场景吗?确保在session_start 之前调用error_reporting 而不纠缠是不敬的。
  • 我也不信任他们。这就是我很好奇的地方,因为我个人还没有看到任何问题。特别是当您考虑设计一个类并拥有它自己的错误处理系统时。我很难接受确实存在问题。
  • 您是否为每个类设置了不同的错误报告级别?如果是这样,为什么?
  • 说真的,我想不出这样做的正当理由。通常,您要么在开发中全部显示它们,要么在生产中全部隐藏它们。
  • 不,我不影响每个班级的水平——这将是没有意义和麻烦的。但是在特殊情况下,我认为知道会很有用。我只是发现手册中的评论很奇怪。

标签: php class session error-handling


【解决方案1】:

虽然没有直接回答您的问题,但使用 ob_start() 作为第一个调用很可能会解决您的问题,因为当输出缓冲打开时,标题和内容顺序将不再重要。

【讨论】:

    【解决方案2】:

    首先,这两个功能显然是完全不相关的。

    其次,我在session_start 之前和之后都给error_reporting 打过电话,但从未遇到过问题。使用我的框架的人也没有报告任何问题。最好在应用程序开始附近设置一次error_reporting,但有时我会在调试其他人代码的特定部分时设置得更深。

    但是,如果您要在开始会话之前输出错误(打开显示错误),如果您没有输出缓冲,则会收到标题警告。

    【讨论】:

    • 没错,这些标题警告可能是 php.net 的评论者所经历的。
    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2012-09-26
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多