在我的PHP错误处理程序中,我想做类似的事情:
if (ini_get('display_errors') IS ON)) { // show debug info } else { // show just "oops!" }
我查看了文档和内容,但我无法确定display_errors的可能值是什么(例如“on”,0,“Yes”)以及它对什么值的作用。< / p>
我应该用什么代替“IS ON”来可靠地读取这个值?
答案 0 :(得分:3)
您可以通过ini_get()获取值的字符串表示形式,display_errors
可以设置的值为true\false
,0\1
和On\Off
。但是,当用户设置php.ini
时,使用1
或On
if (ini_get('display_errors') == "1") {
// show debug info
}
或检查所有案例,您可以执行开关案例
ini_set('display_errors', 1);
switch (ini_get('display_errors')) {
case "1":
case "On":
case "true":
// show debug info
}
如果您更喜欢相等比较方法,请注意ini_get
返回String
值1
,如果您使用{{1}使用ini_get
测试返回值使用==
值int
,它变为真。如果您使用1
,它会检查两者是否相同且类型相同。 ===
与String
的类型不同,因此会返回int
。
false
使用1 == "1"; // in PHP, this returns true, it doesn't check the type.
1 === "1"; // would be false, this however checks the type.
,您可以检查ini_get('display_errors')
,TRUE
等值
甚至是FALSE
。它们将返回NULL
的布尔值,0
和除false
以外的任何值的评估为0
。
true
我看到你对差异的评论,所以我决定自己测试,这是我用的
if (2) {
echo "2 is true!"; // echos "2 is true!"
}
这个答案有点冗长,但我希望这就是你所需要的。
答案 1 :(得分:2)
根据文档,默认值为“1”。但是,您可能需要检查反向,它没有关闭:
!= FALSE
或!empty()
if (ini_get('display_errors') != FALSE))
{
// show debug info
}
else
{
// show just "oops!"
}
或者正如安东尼指出的那样,你可以查看1
if(ini_get('display_errors') == 1))
您可能还想检查error_reporting
,因为这是用于控制错误显示的另一种常见设置,尽管其含义与display_errors
略有不同
if(error_reporting() != 0)
答案 2 :(得分:2)
我使用以下代码:
if (in_array(strtolower(ini_get('display_errors')), array('1', 'on', 'true')) {
// is enabled
} else {
// is disabled
}
答案 3 :(得分:0)
if ( filter_var( ini_get('display_errors'), FILTER_VALIDATE_BOOLEAN) ){
}
这应该能捕捉到 display_errors 可能被打开的所有不同方式。