PHP将警告设置为致命

PHP将警告设置为致命,php,apache,configuration,Php,Apache,Configuration,有没有办法在php.ini或apache级别指定脚本在出现任何警告时应停止执行?我试着在谷歌和stackoverflow上搜索,但还没有找到任何相关信息。我确实知道set_error_handler()函数,但我希望在php.ini级别上执行此操作。好的,在配置级别上无法执行类似操作。但是,我认为可以使用PHP的set\u error\u handler函数来完成 //Custom error function (even triggers for warnings) set_error_han

有没有办法在php.ini或apache级别指定脚本在出现任何警告时应停止执行?我试着在谷歌和stackoverflow上搜索,但还没有找到任何相关信息。我确实知道set_error_handler()函数,但我希望在php.ini级别上执行此操作。

好的,在配置级别上无法执行类似操作。但是,我认为可以使用PHP的
set\u error\u handler
函数来完成

//Custom error function (even triggers for warnings)
set_error_handler(function($severity, $message, $file, $line) {
    if (error_reporting() & $severity) {
        throw new ErrorException($message, 0, $severity, $file, $line);
    }
});


在您设置的函数中,可以通过
ERROR\u TYPE
参数检测警告,并使用
exit
die
停止脚本。因此,像往常一样,要证明您所要求的否定是有点困难的。大约14秒的谷歌搜索可以得到完整的php.ini指令列表:


本页上只有4个“警告”一词的实例,因此看起来这种异国情调的想法不是一个选项。

我建议您可以使用自定义错误功能

//Custom error function (even triggers for warnings)
set_error_handler(function($severity, $message, $file, $line) {
    if (error_reporting() & $severity) {
        throw new ErrorException($message, 0, $severity, $file, $line);
    }
});
在我使用此代码的项目中,我制作了这个小助手函数,用于在项目的不同部分切换:

function updateErrorHandling($state) {

    //custom error handler or standard
    if ($state > 1) {

        //Custom error function (even triggers for warnings)
        set_error_handler(function($severity, $message, $file, $line) {
            if (error_reporting() & $severity) {
                throw new ErrorException($message, 0, $severity, $file, $line);
            }
        });

    } else {

        //Standard Exception Handling on / off
        ini_set('display_errors', $state);
        ini_set('display_startup_errors', $state);
        error_reporting($state == 1 ? E_ALL : 0);

    }
}

你为什么想要这种奇怪的行为?我不想要,我想确定这是不可能的。请仔细阅读问题。我已经补充说,我知道set_error_handler函数,但需要在php.ini级别进行设置。无论如何,谢谢你的回答。请阅读答案,以及另一个答案:没有办法做你所要求的。答案试图提供你想要的行为,如果不是通过你想要的方式。@ChrisHenry-你是说“AFAIK”吗?虽然我不同意你的搜索方法(停止很可能属于更一般的类别,而不是“警告”一词),但我确实同意这是一个奇异的想法:-)。。只是想确保生产服务器上的警告消息永远不会影响我的脚本执行。。。谢谢。我想你是对的,如果我要发射航天飞机,我会更加努力确保在切换和伪装成无辜的东西时,不存在可能导致这种行为的其他指令。:-)我只是想向你推荐我要找的地方,并举例说明我会怎么找。正如我所说,如果不进行测试或查看代码,很难证明否定。您还可以grep php.ini,因为在5.3中有大量注释,如果您要查找的内容存在,则其注释可能包含警告或hault。这不是如何使警告停止解释器的答案。我认为正确的答案是,这是PHP的一个局限性。没有任何配置选项可以在出现所有错误时停止解释器。vsprintf中的“参数太少”就是一个例子。这是一个警告,因此除非您创建自定义错误处理程序,否则它不会停止解释器。