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

Is it relevant to make personalized 5** error pages?

我正在按照教程制作个性化错误页面,在我的 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 以外的错误?

是 5** 页面将生成自定义 PHP 页面。 要模拟 5** 和 4** 错误,只需像这样使用 headers :

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

有关 headers here 的更多信息。

有一些很好的例子there

注意 : 覆盖错误页面将使您丢失错误消息,除非您手动处理它们。

是的,您确实担心如果服务器已经生成 500 级错误,服务器可能无法 运行 PHP 脚本。在我工作的地方解决它的方式是:

  1. 创建您的 error.php 页面。
  2. 创建定期捕获 error.php 到静态 error.html 页面的 cron 作业。
  3. error.html 设置为 Apache 中的 500 级错误页面。

我们将此作为 cron 作业的原因是我们的应用程序对总体布局或周围内容进行了更改,这些更改无需人工干预即可捕获。