如果我在我的代碼中意外犯了一個錯誤,使用PHP顯示500頁是否可能?我嘗試使用error_reporting(0)
但這隻會隱藏錯誤。如果我使用htaccess的php_flag display_errors off
瀏覽器(以及其他瀏覽器)將只顯示500錯誤像這樣的:http://image.prntscr.com/image/4c87df1998634097a18a85d268ccc818.png如果發現PHP錯誤,請包含500個文件
謝謝:)
如果我在我的代碼中意外犯了一個錯誤,使用PHP顯示500頁是否可能?我嘗試使用error_reporting(0)
但這隻會隱藏錯誤。如果我使用htaccess的php_flag display_errors off
瀏覽器(以及其他瀏覽器)將只顯示500錯誤像這樣的:http://image.prntscr.com/image/4c87df1998634097a18a85d268ccc818.png如果發現PHP錯誤,請包含500個文件
謝謝:)
在PHP 5.x中,您可以捕獲除了致命錯誤之外的所有錯誤。只要看看http://php.net/manual/en/function.set-error-handler.php
簡單的例子:
<?php
function handler($errno, $errstr, $errfile, $errline)
{
echo file_get_contents('500.html');
die();
}
set_error_handler('handler', E_ALL);
非常感謝:P –
Combianate這些功能使一個重定向錯誤:
error_get_last()
#得到lasterror
header()
#至rediect如果需要
register_shutdown_function()
#發現error_get_last錯誤
ob_start()/ob_flush()
#抓內容,後期表現或不
在你的PHP文件的開頭:
ob_start();
register_shutdown_function(function(){
$err = error_get_last();
//check the $err
if($err){
header('Location: 505.html');
exit;
} else {
ob_flush();#or ob_end_flush();
exit;
}
});
您還可以趕上這個致命錯誤。
感謝您的支持!但它也可以捕獲解析錯誤? –
'解析錯誤',如果你的意思是PHP代碼解析錯誤:不。編譯是在執行之前和編譯時檢查語法中的錯誤 – JustOnUnderMillions
php_check_syntax(string $ filename [,string&$ error_message]) – JustOnUnderMillions
只是爲了澄清:你想顯示一個頁面,如果500錯誤發生? – Fairy
一般規則:如果你得到一個500錯誤,你首先要檢查的是服務器的錯誤日誌,以獲取500. –
@Fairy不,如果我在我的PHP代碼中犯了一個錯誤,我想顯示一個500頁用戶看不到PHP警告。我知道我可以隱藏它們,但我更願意展示一個有用的500頁而不是 –