【发布时间】:2023-12-15 17:24:01
【问题描述】:
我正在用 PHP 编写一个身份验证脚本,作为 API 调用,否则需要返回 200only in the case that it approves the request, and403(Forbidden) or500`。
我遇到的问题是 php 在错误情况下返回200,而是将错误输出为 html。除非我自己明确返回 HTTP 200 或 HTTP 403,否则我如何绝对确保 php 将返回 HTTP 500 代码?换句话说,我想将任何和所有警告或错误条件都变成500s,没有例外,因此默认情况是拒绝身份验证请求,而例外情况是使用200 代码批准它。
我曾摆弄过set_error_handler() 和error_reporting(),但到目前为止还没有运气。例如,如果代码在我发送HTTP响应代码之前输出了一些东西,PHP自然会报告你输出任何东西后不能修改头信息。但是,PHP 将其报告为 200 响应代码,其中包含解释问题的 html。我什至需要将这种东西变成500 代码。
这在 PHP 中可行吗?还是我需要在更高级别上执行此操作,例如以某种方式使用mod_rewrite?如果是这样的话,知道我是如何设置的吗?
【问题讨论】:
-
这里有一个错误报告:bugs.php.net/bug.php?id=50921 - 它看起来可能会得到修复。