给出以下两种在PHP中设置HTTP响应代码的方法(特别是在Apache下):
方法1:
http_response_code(404);
方法2:
header("HTTP/1.0 404 Not Found");
我的问题是:
http_response_code
仅在PHP 5.4或更高版本中可用,这两种方法之间有什么区别,以及为什么/何时使用一种方法? 由于没有明显的原因,我被淹没了遗忘,我已经设法通过浏览PHP源代码自己回答这个问题。 希望这可以作为其他人试图解决这个问题的参考。
这两种方法基本上在功能上是等价的。 http_response_code
基本上是编写一个http状态头的一种简便的方式,另外还有一个额外的好处,即PHP可以通过将你的响应代码与枚举中的一个值进行匹配来提供一个合适的原因短语 ,它在php-src / main / http_status_codes.h 。
请注意,这意味着您的响应代码必须与PHP知道的响应代码相匹配。 您不能使用此方法创建自己的响应代码,但可以使用header
方法。 另请注意, http_response_code
仅在PHP 5.4.0及更高版本中可用。
总之 – http_response_code
和header
设置响应码的区别:
使用http_response_code
将使PHP匹配并应用硬编码到PHP源代码的原因短语列表中的原因短语。
因为上面的第1点,如果你使用http_response_code
你必须设置一个PHP知道的代码。 您不能设置自己的自定义代码,但是如果使用header
功能,则可以设置自定义代码(和原因短语)。
http_response_code
仅在PHP 5.4.0及更高版本中可用