首页  >  文章  >  后端开发  >  如何安全处理 PHP 中的致命错误?

如何安全处理 PHP 中的致命错误?

Susan Sarandon
Susan Sarandon原创
2024-10-24 11:49:29269浏览

How to Safely Handle Fatal Errors in PHP?

安全处理 PHP 中的致命错误

PHP 的错误处理功能包括捕获诸如“允许的内存大小耗尽”之类的致命错误。当脚本消耗过多内存时会出现此错误。您可以向用户返回自定义消息,而不是增加内存限制。

一种有效的方法是利用 register_shutdown_function()。该函数注册一个检查 error_get_last() 的回调。通过在脚本运行完成后检查错误,您可以确定是否发生了致命错误并妥善处理。

这里是一个示例实现:

<code class="php">ini_set('display_errors', false);
error_reporting(-1);

set_error_handler(function($code, $string, $file, $line){
        throw new ErrorException($string, null, $code, $file, $line);
    });

register_shutdown_function(function(){
        $error = error_get_last();
        if(null !== $error)
        {
            echo 'Caught at shutdown';
        }
    });

try
{
    while(true)
    {
        $data .= str_repeat('#', PHP_INT_MAX);
    }
}
catch(\Exception $exception)
{
    echo 'Caught in try/catch';
}</code>

执行时,此脚本打印“ Caught at shutdown”,表示在 shutdown 函数中捕获了致命错误。

您可以检查 shutdown 函数中的 $error 数组来确定错误原因并采取适当的操作,例如重新发出使用不同参数的请求或返回响应。

需要注意的是,虽然建议将 error_reporting() 保持在较高级别 (-1),但您仍然应该使用 set_error_handler() 和 ErrorException 来处理所有其他错误需要防止脚本执行期间出现问题。

以上是如何安全处理 PHP 中的致命错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn