我的分类广告网站主要使用 PHP 和 MySql 。
出错时(例如,如果找不到变量),我想要显示一个错误页面,这可能吗?我的意思是每个错误都指向相同的错误页面。
我正在考虑htaccess
,但也许还有其他方法吗?
与MySql相同,它是如何完成的?
由于
答案 0 :(得分:2)
您可以使用可能正在寻找的PHP错误处理方法。有一个不错的教程here。
答案 1 :(得分:2)
就个人而言,我一直使用错误例外(http://us.php.net/manual/en/class.errorexception.php)......
因此,在我的代码开头,我有以下内容:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
然后,我将每个人包裹在一个巨大的try {} catch {}块中。所以我可以“捕获”更高的错误,但如果我不这样做,它会向客户端显示错误消息:
ob_start();
try {
//Do Stuff Here, include files, etc
} catch (Exception $e) {
ob_end_clean();
//Log the error here, including backtraces so you can debug later
//Either render the error page here, or redirect to a generic error page
}
美丽的是,它会遇到任何错误。所以在我的DB类中,我只是抛出一个DatabaseException(它扩展了Exception)。因此,如果我想要优雅地失败,我可以尝试/捕获它,或者我可以让它由顶部的try {} catch块处理。
答案 2 :(得分:1)
您可以附加自定义错误处理程序来执行重定向。首先,启用输出缓冲,否则无法调用所需的header()
函数。
ob_start();
// This function will be our custom error handler
function redirect_on_error(int $errno , string $errstr) {
// Ignore the error, just redirect the user to an error page
ob_end_clean(); // Erase any output we might have had up to this point
header('Location: error.html'); // Or wherever you want to redirect to
exit;
}
set_error_handler('redirect_on_error'); // Set the error handler
// Your code goes here
ob_end_flush(); // End of the page, flush the output buffer