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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中ini_set()的目的是什么? (尤其是错误报告)相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

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

另一答案
 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');
?>
另一答案

string ini_set ( string $varname , string $newvalue )

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

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

另一答案

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

以上是关于php中ini_set()的目的是什么? (尤其是错误报告)的主要内容,如果未能解决你的问题,请参考以下文章

php的ini_set函数

ini_set

ini_set() 作用范围?

PHP PHP ini_set显示错误和默认时区

php [ini_set]#电影业务

是否有任何函数可以设置 extension=php_mssql.dll 而无需在 php.ini 中使用我们使用 ini_set() 之类的函数进行编辑;方法