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()的目的是什么? (尤其是错误报告)的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何函数可以设置 extension=php_mssql.dll 而无需在 php.ini 中使用我们使用 ini_set() 之类的函数进行编辑;方法