制作个性化的5 **错误页面是否相关?

时间:2015-02-28 01:26:02

标签: php apache error-handling

我正在按照教程制作个性化的错误页面,在我的apache conf中使用这样的行:

ErrorDocument 400 /errors/errors.php
ErrorDocument 401 /errors/errors.php
ErrorDocument 402 /errors/errors.php
ErrorDocument 403 /errors/errors.php
ErrorDocument 404 /errors/errors.php
ErrorDocument 405 /errors/errors.php
ErrorDocument 500 /errors/errors.php
ErrorDocument 501 /errors/errors.php
ErrorDocument 502 /errors/errors.php
ErrorDocument 503 /errors/errors.php
ErrorDocument 504 /errors/errors.php
ErrorDocument 505 /errors/errors.php

并根据error.php$_SERVER["REDIRECT_STATUS"]中进行一些处理。

到目前为止一切顺利。

但我想知道服务器是否遇到内部错误,是否能够执行error.php文件? 在这种情况下提供error.html文件会更聪明吗?

我有一个最后的问题:如何测试这些指令?如何模拟404以外的错误?

2 个答案:

答案 0 :(得分:1)

是的,您有一个有效的担忧,即如果服务器已经生成了500级错误,那么服务器可能无法运行PHP脚本。它在我工作的地方得到解决的方式是:

  1. 创建您的error.php页面。
  2. 创建一个定期将error.php捕获到静态error.html页面的cron作业。
  3. error.html设置为Apache中的500级错误页面。
  4. 我们将此作为cron作业的原因是,我们的应用程序对总体布局或周围内容进行了更改,这些更改在没有人为干预的情况下被捕获。

答案 1 :(得分:0)

是5 **页面将使用自定义 PHP 页面生成。 要模拟5 **和4 **错误,只需使用如下标题:

<?php header('HTTP/1.1 500 Internal Server Error'); ?>

有关标题here的更多信息。

有一些不错的例子there

注意:除非您手动处理错误页面,否则覆盖错误页面会使您丢失错误消息。