获取Apache错误代码并在PHP中显示它

时间:2015-07-28 14:03:44

标签: php apache2.4

我正在创建一个PHP错误页面,我想知道是否有任何方法可以获得导致错误并显示错误的错误代码。然后,我可以使用相同但PHP显示不同的错误代码,具体取决于发生的错误。我正在使用Apache 2.4和PHP 5.6.10。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

将所有错误页面指向.htaccess

中的一个位置
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php

然后在error.php中你可以这样做:

<?php
$status = $_SERVER['REDIRECT_STATUS'];
$codes = array(
       403 => array('403 Forbidden', 'The server has refused to fulfill your request.'),
       404 => array('404 Not Found', 'The document/file requested was not found on this server.'),
       405 => array('405 Method Not Allowed', 'The method specified in the Request-Line is not allowed for the specified resource.'),
       408 => array('408 Request Timeout', 'Your browser failed to send a request in the time allowed by the server.'),
       500 => array('500 Internal Server Error', 'The request was unsuccessful due to an unexpected condition encountered by the server.'),
       502 => array('502 Bad Gateway', 'The server received an invalid response from the upstream server while trying to fulfill the request.'),
       504 => array('504 Gateway Timeout', 'The upstream server failed to send a request in the time allowed by the server.'),
);

$title = $codes[$status][0];
$message = $codes[$status][1];
if ($title == false || strlen($status) != 3) {
       $message = 'Please supply a valid status code.';
}
// Insert headers here
echo '<h1>'.$title.'</h1>
<p>'.$message.'</p>';
// Insert footer here

来自https://css-tricks.com/snippets/php/error-page-to-handle-all-errors/

-

如果您想要ex的自定义错误消息。解析错误,您可以将其添加到PHP文件的顶部:

<?php
set_error_handler('errorHandler');
function errorHandler($code, $msg, $file, $line) {

    header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
    echo "<h1>Unexpected error occurred</h1><p>The request was unsuccessful due to an unexpected error.</p>";
    // PHP error message:
    echo "<p>$msg</p>";
    die();
}