【问题标题】:Is there a way that I enforce that PHP reports error if I use an uninitialized/undefined variable?如果我使用未初始化/未定义的变量,有没有办法强制 PHP 报告错误?
【发布时间】:2011-04-05 14:16:54
【问题描述】:

我将结果与结果混在一起犯了一个巨大的错误,我花了大约 4 个小时才最终找到错误。

所以这里的问题是,在 PHP 中,如果我使用未定义/未初始化的变量,是否可以强制 PHP 报告错误。

谢谢

【问题讨论】:

    标签: php error-reporting


    【解决方案1】:

    将错误报告设置为E_ALL,并确保php.ini 中的display_errors 处于打开状态。

    php.ini

    display_errors = On
    

    PHP 代码

    // If you cannot access the php.ini file
    // you can do this within your PHP code instead
    @ini_set('display_errors' '1');
    error_reporting(E_ALL);
    

    您现在的默认设置可能不包括通知,即 PHP 在未初始化变量上引发的错误类型,可能是这样的:

    error_reporting(E_ALL & ~E_NOTICE);
    

    【讨论】:

    • 你好 BoltClock,我把设置放在哪里最好?我有一个几乎所有 php 脚本都包含的 constant.php。这是将设置插入该包含文件的好方法吗?谢谢
    • 您可以将它放在您知道将包含在所有脚本中的配置文件或常量文件中。
    【解决方案2】:

    在开发环境中我更喜欢使用error_reporting(-1)。报告所有 PHP 错误。

    【讨论】:

    • +1 为了方便起见,这相当于error_reporting(E_ALL | E_STRICT),因为E_ALL 本身包含E_STRICT
    【解决方案3】:

    是的,使用error_reporting() 并将其设置为E_ALL,如下所示:

     error_reporting(E_ALL);
    

    【讨论】:

      【解决方案4】:

      设置错误报告以报告所有错误。在 php.ini 或运行时使用 error_reporting(E_ALL)

      【讨论】:

        【解决方案5】:

        它已经报告了一个错误。像这样:

        "Notice:  Undefined variable: a in C:\wamp\www\testcenter\index.PHP on line 40"
        

        也许你说得不够具体。但是您应该尝试error_reporting(-1);,就好像强制php显示一些建议一样。 php 手册中关于 E_STRICT 错误的一篇文章:

        启用 PHP 建议对您的代码进行更改,这将确保您的代码具有最佳的互操作性和前向兼容性。

        请记住error_reporting(-1); 显示的错误比error_reporting(E_ALL); 多,因为E_STRICT 错误不包含在E_ALL 约束中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-24
          • 1970-01-01
          相关资源
          最近更新 更多