php中ini_set()的目的是什么? (尤其是错误报告)

时间:2014-09-10 07:46:16

标签: php compiler-errors ini

好的,所以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):

为什么在仍然无法显示某些微不足道的语法错误时,我可以选择显示错误?

5 个答案:

答案 0 :(得分:1)

是的,你是对的,它只是删除函数,只为不同的错误级别配置php.ini文件。

但是,只有在您的计算机中只有一个项目的情况下这才是好的,所以,您可以在php.ini中进行所有配置设置 如果您有多个项目设置,请考虑这种情况。如果您不想在该项目中进行某些设置,那么它将从php.ini

获取

因此,建议您在某些配置设置中使用ini_set()在项目级别设置它们,并且不会反映其他项目。

答案 1 :(得分:0)

<强> string ini_set ( string $varname , string $newvalue )

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

可以在脚本运行期间配置所有变量。请仔细阅读以下链接。

答案 2 :(得分:0)

 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 :(得分:0)

可以在运行时使用ini_set()函数配置其他设置: memory_limit和max_execution_time (摘自有关PHP基础知识的ZCE测试部分)。

答案 4 :(得分:-2)

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