PHP或MySql错误;可以在浏览器中显示“错误页面”吗?

时间:2010-05-17 14:21:18

标签: php sql mysql html .htaccess

我的分类广告网站主要使用 PHP MySql

出错时(例如,如果找不到变量),我想要显示一个错误页面,这可能吗?我的意思是每个错误都指向相同的错误页面。

我正在考虑htaccess,但也许还有其他方法吗?

与MySql相同,它是如何完成的?

由于

3 个答案:

答案 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