【问题标题】:What's the purpose of ini_set() in php? (especially for error reporting)php中ini_set()的目的是什么? (尤其是错误报告)
【发布时间】:2014-11-03 18:42:18
【问题描述】:

好的,所以 PHP 有很多人都知道的函数 ini_set(),并将使用它来设置各种配置选项 (here) 以帮助开发等。然而,这个函数似乎只在运行时工作如果有任何致命错误或脚本有语法错误并且无法解析/编译,则将无法工作。

因此,这样做肯定没有意义(来自手册):

http://php.net/manual/en/function.ini-set.php

示例

示例 #1 设置 ini 选项

<?php
echo ini_get('display_errors');

if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
}

echo ini_get('display_errors');
?>

我不知道我是否只是遗漏了一些东西并且我的 php.ini 配置不正确,但很多时候我没有收到任何错误。对于初学者/初学者来说无疑会有很多语法错误(缺少分号,右括号等),并且说初级会搜索如何打开错误,假设上面的手动输入是正确的,但是当重新运行时他们的脚本,唉,他们没有错误,因为脚本一开始就无法解析/编译。

我知道您可以在 php.ini 文件中设置 display_errors = On 并重新启动您的 Web 服务器以将所有错误显示在屏幕上(在开发环境中使用它,绝对不是实时的),但这不是更好吗去掉这个函数,只为不同的错误级别配置php.ini文件?

更新:

我知道 ini_set 不只是用于显示错误,但如果您在某些脚本/函数/文件中调用 ini_set,代码就不是很容易管理,使用 php.ini类似的东西?

更新

所以 ini 文件可以用来设置全局配置选项,当然你会使用它来进行安全或优化,但是开发人员仍然可以在运行时使用 ini_set 覆盖其中一些选项,这可能是不可取的

总结(@Hanky웃Panky):

为什么在一些琐碎的语法错误仍然不显示时,我可以选择显示错误?

【问题讨论】:

  • ini_set('display_errors', true);
  • ini_set 不仅用于设置错误显示模式:)
  • @Hanky웃Panky 是的,我明白,请参阅更新
  • 话虽如此,这是一个有效的问题,想知道为什么当一些琐碎的语法错误仍然不会显示时,我可以选择显示错误
  • 为什么投反对票的人?好奇

标签: php compiler-errors ini


【解决方案1】:

是的,你说得对,最好只是删除该功能,只为不同的错误级别配置 php.ini 文件。

但是,这只有在你的机器上只有一个项目的情况下才有用,所以,它的所有配置设置都可以在 php.ini 中进行 考虑一下,如果您有多个项目设置。如果您不希望该项目中的某些设置仍然可以从 php.ini 获得

因此,对于某些配置设置,建议您只需在项目级别使用 ini_set() 进行设置,不会反映其他项目。

【讨论】:

    【解决方案2】:
     string ini_set ( string $varname , string $newvalue );
    

    ini_set 的目的是设置给定配置选项的值。 此新值在脚本执行期间由配置选项保留,并在脚本结束时恢复。

    设置 ini 选项的示例

     <?php
    echo ini_get('display_errors');
    
    if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
    }
    echo ini_get('display_errors');
    ?>
    

    【讨论】:

      【解决方案3】:

      string ini_set ( string $varname , string $newvalue )

      基本上ini_set() 设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并在脚本结束时恢复。

      在脚本运行期间您可以配置的所有变量。请通过以下链接。

      【讨论】:

        【解决方案4】:

        可以在运行时使用 ini_set() 函数配置其他设置: memory_limit 和 max_execution_time (来自 ZCE 测试部分关于 PHP Basics)。

        【讨论】:

          【解决方案5】:

          ini_set — 设置配置选项的值。设置给定配置选项的值。配置选项将在脚本执行期间保留这个新值,并在脚本结束时恢复,如果没有 ini_set(),将使用 php.ini 文件中的值。

          编辑:

          您可能会发现这很有帮助:

          // Turn off all error reporting
          error_reporting(0);
          
          // Report simple running errors
          error_reporting(E_ERROR | E_WARNING | E_PARSE);
          
          // Reporting E_NOTICE can be good too (to report uninitialized
          // variables or catch variable name misspellings ...)
          error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
          
          // Report all errors except E_NOTICE
          error_reporting(E_ALL & ~E_NOTICE);
          
          // Report all PHP errors (see changelog)
          error_reporting(E_ALL);
          
          // Report all PHP errors
          error_reporting(-1);
          
          // Same as error_reporting(E_ALL);
          ini_set('error_reporting', E_ALL);
          

          【讨论】:

            猜你喜欢
            • 2013-03-25
            • 1970-01-01
            • 2014-09-10
            • 1970-01-01
            • 2011-08-30
            • 2018-12-26
            • 1970-01-01
            • 1970-01-01
            • 2020-06-18
            相关资源
            最近更新 更多