【问题标题】:PHP header() function making a entry in error logPHP header() 函数在错误日志中创建条目
【发布时间】:2015-10-03 13:09:42
【问题描述】:

我正在制作一个 API。

我必须展示错误处理。当任何请求未获取或在 DB 中不存在或任何其他错误时,该错误应伴随json_encode 字符串,并且响应标头中应存在 HTTP 错误代码。

由于 PHP 5.3 没有 http_response_code,我使用了自定义函数,如 PHP documentation page's 第一条评论中所写。

问题是,当我像 http_response_code(405) 这样执行这个函数时,它没有在标题中给出响应代码,而是在 php 错误日志中输入了一个条目。

header('HTTP/1.0 405 Method Not Allowed') 从上面给出的函数内部调用,这会生成一个 PHP 错误日志条目。

为什么会这样?当我使用 POSTMAN 进行 API 调用时,为什么在标头中没有获得 HTTP 响应代码

编辑

错误日志中显示的错误

[2015 年 7 月 14 日星期二 23:40:07] [错误] [客户端 127.0.0.1] PHP 警告:file_get_contents(localhost/APICall_2.php?ip=127.0.0.1):未能打开流:HTTP 请求失败!第 31 行 API_2.php 中的 HTTP/1.0 405 Method Not Allowed\r\n

【问题讨论】:

  • 日志中的错误是什么?
  • [2015 年 7 月 14 日星期二 23:40:07] [错误] [客户端 127.0.0.1] PHP 警告:file_get_contents(localhost/APICall_2.php?ip=127.0.0.1):打开流失败:HTTP 请求失败! HTTP/1.0 405 Method Not Allowed\r\n in API_2.php on line 31
  • 请不要在 cmets 中转储代码。编辑您的原始帖子以添加任何新信息。
  • 对我来说,就像您使用 PHP(向 PHP)发出请求,获取正确的标头,但请求失败。
  • 当我删除 header() function 时,我的请求开始获取结果。所以我的请求没有失败。我传递了错误的参数来检查我的错误处理,我用正确的响应代码返回错误。

标签: php http-response-codes


【解决方案1】:

记住 response_code 是在服务器端设置的,必须在发送任何正文之前设置。服务器access.log会记录405但没有文字。

如果在设置 response_code 之前允许任何字节进入输出缓冲区,error.log 会这样说。你也可以配置你的 php.ini 来创建一个 php_error.log 文件来帮助调试。

窗口: error_log = c:\apache\apache2.4\logs\php_errors.log

Linux error_log = /apache/apache2.4/logs/php_errors.log

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2014-12-31
    • 2012-05-21
    • 2011-08-11
    • 2015-12-05
    • 2019-07-20
    相关资源
    最近更新 更多