php - 如何在发生任何错误时返回 HTTP 500 代码,无论如何

标签 php http response

我正在用 PHP 编写一个身份验证脚本,被称为 API,仅在它批准请求的情况下才需要返回 200,并且403(禁止)或500`否则。

我遇到的问题是php在错误情况下返回200,而是将错误输出为html。除非我自己明确返回 HTTP 200 或 HTTP 403,否则我如何才能绝对确保 php 将返回 HTTP 500 代码?换句话说,我想将任何和所有警告或错误条件变成 500s,没有异常(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/

相关文章:

php - 用php插入mysql

javascript - http协议(protocol)对body大小有限制吗

asp.net - Session_Start 中的 Response.Redirect 不起作用

java - 如何在 Servlet Response 中设置 pdf 标题

php - 无法使用Mysql连接数据库

php - 如何在 Laravel 中使用 Codeception 设置用于测试的 DB 对象

php - Laravel:在分页中自定义页面链接

http - postman : Error: Parse Error: Invalid header value char

java - 区分 URL 用户名和基本身份验证用户名?

javascript - 从 Javascript 中的 Action 输出响应