我正在用 PHP 编写一个身份验证脚本,被称为 API,仅在它批准请求的情况下才需要返回 200,并且
403(禁止)或
500`否则。
我遇到的问题是php在错误情况下返回200
,而是将错误输出为html。除非我自己明确返回 HTTP 200
或 HTTP 403
,否则我如何才能绝对确保 php 将返回 HTTP 500
代码?换句话说,我想将任何和所有警告或错误条件变成 500
s,没有异常(exception),因此默认情况是拒绝身份验证请求,而异常(exception)情况是使用 200
代码。
我已经摆弄过 set_error_handler()
和 error_reporting()
,但到目前为止还没有运气。例如,如果代码在我发送HTTP响应代码之前输出了一些东西,PHP自然会报告你输出任何东西后不能修改头信息。但是,PHP 将其报告为 200
响应代码,其中包含解释问题的 html。我什至需要把这种东西变成一个500
代码。
这在 PHP 中可行吗?或者我是否需要在更高级别上执行此操作,例如以某种方式使用 mod_rewrite
?如果是这样的话,知道我是如何设置的吗?
最佳答案
只需发送状态码作为响应header()
:
header('HTTP/1.1 500 Internal Server Error');
请记住,在发送它时,不能在它之前有任何输出。这意味着没有 echo
调用,也没有 HTML 或空格。
关于php - 如何在发生任何错误时返回 HTTP 500 代码,无论如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052715/