gpt4 book ai didi

php - 在 PHP 中触发 500 Internal Server Error 并显示 Apache 错误页面

转载 作者:IT王子 更新时间:2023-10-29 00:59:26 29 4
gpt4 key购买 nike

如何在 PHP 中触发 500 Internal Server Error404 Page Not Found Apache 错误?

对于 500 内部服务器错误,我尝试了以下代码:

header("HTTP/1.0 500 Internal Server Error");

但它显示了一个空白页。如何以 Apache 的默认格式显示错误?

请指导..

最佳答案

您可以将 Apache 错误文档复制到您的 Web 根目录(或将它们符号链接(symbolic link)到其中)并使用 header()设置错误代码并将这些文档作为输出。除非您有令人信服的理由不这样做,否则这可能是最好的。但是,如果这对您不起作用,还有一些替代方案(尽管是骇人听闻的替代方案)。

对于 500,只需在您的代码中添加一个错误。

<?php throw new Exception('Nooooooooooooooo!'); ?>

PHP 脚本将引发异常,导致出现常规的 Apache 500 错误页面。 (但请注意,如果 PHP 初始化设置 display_errors 设置为 0,这只会导致 Apache 错误。在大多数开发配置中,这不是情况。在大多数生产配置中,都是这种情况。如果您不知道生产服务器的设置,则必须测试它以查看它是否有效。)

对于 404,我认为你能做的最好的事情就是重定向到一个不存在的页面。这并不完全相同,但可能适合您的目的。

<?php header("Location: /i-dont-think-therefore-i-am-not"); ?>

在大多数浏览器中,用户实际上不会看到重定向,他们只会静静地快速重定向到一个不存在的页面,从而导致常规的 Apache 404 错误。当然,url 会发生变化,一些用户可能会注意到这一点。如果这 Not Acceptable ,您也许可以使用 Apache mod_rewrite 获得类似的结果。将 url 后端重写到一个不存在的位置。

回应几条评论:通过header()(或其他方式)设置响应代码不会产生标准的Apache 错误文档。它只会用您自己的输出返回该响应代码。这是有意为之的行为,旨在让您可以拥有自定义错误文档,或者按照 HTTP 规范对任何请求的规定设置响应代码。如果您想要 Apache 错误文档,您必须伪造它们(按照我最初的建议,将错误文档简单地复制到您的 Web 根目录),或者您将不得不欺骗 Apache 返回它们(根据我的备份建议)。

关于php - 在 PHP 中触发 500 Internal Server Error 并显示 Apache 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687390/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com