【问题标题】:Undefined variable: HTTP_RAW_POST_DATA未定义变量:HTTP_RAW_POST_DATA
【发布时间】:2012-03-04 07:31:27
【问题描述】:

当我对 $HTTP_RAW_POST_DATA 做一个简单的回显时,我得到了错误:

Undefined variable: HTTP_RAW_POST_DATA

我在 php.ini 中看到我需要取消勾选

always_populate_raw_post_data = On

但我仍然收到错误,并且我也确实重新启动了 Apache。我使用的是 php 5.3.6

【问题讨论】:

  • 您是否将任何 HTTP_RAW_POST_DATA 用于任何网络服务?
  • 在这个例子中,没有,但我最初关注了这个页面phpmaster.com/web-services-with-php-and-soap-1并得到了错误,所以我创建了一个页面来调查错误。

标签: php


【解决方案1】:

如果您需要访问原始 POST 正文,您应该更倾向于使用 php://input 流而不是 $HTTP_RAW_POST_DATA,根据 relevant manual entry

php://input 是一个只读流,允许您读取原始数据 从请求正文。在 POST 请求的情况下,最好 使用 php://input 而不是 $HTTP_RAW_POST_DATA 因为它没有 依赖于特殊的 php.ini 指令。此外,对于那些情况 $HTTP_RAW_POST_DATA 默认不填充,它是一个潜在的 激活时内存占用较少的替代方案 always_populate_raw_post_data。 php://input 不适用于 enctype="multipart/form-data"。

因此,使用php://input 访问 POST 正文:

$post = file_get_contents('php://input');

【讨论】:

  • 谢谢,我在阅读 undefined 时确实看到了这一点,但没想到要使用它。但我错了,谢谢!
【解决方案2】:

如果你得到

注意:未定义变量:HTTP_RAW_POST_DATA

请打开您的服务器文件添加查找

$server->service($HTTP_RAW_POST_DATA);

并替换为以下 2 行。

if ( !isset( $HTTP_RAW_POST_DATA ) ) $HTTP_RAW_POST_DATA =file_get_contents( 'php://input' );
$server->service($HTTP_RAW_POST_DATA);

我希望这会有所帮助。

【讨论】:

  • Milap 你知道如何从 php 脚本中获取响应吗,因为我使用了 soap 服务并且运行良好,搜索了很多文章,他们建议我实现 ajax,php 是服务器端和我想得到它的响应,以便我可以在我的 html 表单中使用它...
  • @San patelmilap.wordpress.com/2011/09/01/… 这里我写了一个简单的例子。看看..
猜你喜欢
  • 2011-06-11
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2021-10-15
相关资源
最近更新 更多