【问题标题】:PHP Get the Raw HTTP Request (php://input not working)PHP 获取原始 HTTP 请求(php://input 不起作用)
【发布时间】:2012-04-27 12:34:58
【问题描述】:

我正在尝试访问在 PHP 中发送到服务器的原始 HTTP 请求。

但是,所有输入/输出流都无法正常工作。

我不能使用php://input,并且我不想“插入”来自$_COOKIES, $_POST 等数组的请求。$_POST, $_GET 和其他数组工作正常。我在 Windows 7 上使用 WAMPServer。

谁能帮我解决输入/输出流的问题或找到其他方法来获取原始请求数据?

【问题讨论】:

  • 如果php://input 不起作用,我怀疑其他选项是否会起作用。
  • 它们不存在。它们被视为不存在的文件。例如,file_exists("php://input") 返回 false。
  • 请查阅 PHP 手册,php://input 有一些限制,它并不总是可用,请参阅此处:php.net/manual/wrappers.php.php - 如果您需要它以用于记录它不可用的情况,请更新您的问题,以便我们可以告诉您如何在没有此类限制的情况下重新编译 PHP。
  • @zerkms 可能是因为请求的内容类型是multipart/form-data 而他没有正确阅读the documentation...

标签: php apache http wampserver


【解决方案1】:

来自 PHP 文档:

php://input 是一个只读流,允许您从请求正文中读取原始数据

这意味着您只能读取正文数据,而不是标题或原始请求。如果你在 Apache 下运行,你可以使用函数apache_request_headers 来获取所有的头文件。要获得“请求”行(请求的第一行),我想您需要连接可以从 $_SERVER 变量中获得的字符串。

【讨论】:

  • 对于If you're running under Apache 阅读if you're running as an Apache module。它在 CGI 模式下不起作用。但是,当作为 FastCGI 或 NSAPI 模块运行时,它确实工作。
  • 真的吗?所以没有办法获取原始请求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多