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

Susan Sarandon
發布: 2024-10-24 11:49:29
原創
175 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!