首頁 >後端開發 >php教程 >如何安全處理 PHP 中的致命錯誤?

如何安全處理 PHP 中的致命錯誤?

Susan Sarandon
Susan Sarandon原創
2024-10-24 11:49:29274瀏覽

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