gpt4 book ai didi

php - 为什么调用 $HTTP_RAW_POST_DATA?

转载 作者:可可西里 更新时间:2023-10-31 22:45:37 25 4
gpt4 key购买 nike

我最近将我的生产服务器升级到 Ubuntu 14.04 和 PHP 5.6,现在我在错误日志中收到警告:

2014/10/31 10:42:45 [error] 17128#0: *46238 FastCGI 在 stderr 中发送:“PHP 消息:PHP 已弃用:自动填充 $HTTP_RAW_POST_DATA 已弃用,将来会被删除版本。为避免出现此警告,请在 php.ini 中将“always_populate_raw_post_data”设置为“-1”,并改用 php://input 流。在第 0 行“未知”中读取来自上游的响应 header 时,客户端:24.123.216.42,服务器:example.com,请求:“POST/api/notes HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“example.com”,引用者:“https://example.com/admin/"

read the documentation以及这个有点相关的问题:Undefined variable: HTTP_RAW_POST_DATA .但是,我不明白为什么要记录此通知。据我所知,我没有在我的代码库中的任何地方使用 $HTTP_RAW_POST_DATA。我试过:

find . -exec grep "HTTP_RAW_POST_DATA" {} \; -print 2>/dev/null

从我的项目的根目录(包括所有供应商目录),但我没有找到任何匹配项。

read more about always_populate_raw_post_data并且似乎仅当 always_populate_raw_post_data 参数设置为 TRUE 时才应填充 $HTTP_RAW_POST_DATA。我检查了我的 phpinfo(),参数设置为 0。

如果我没有显式调用 $HTTP_RAW_POST_DATA 并且 always_populate_raw_post_data 设置为 0,为什么我会在错误日志中收到这些通知?将 always_populate_raw_post_data 设置为 -1 有什么作用?

最佳答案

这是 the relevant C code附上我的评论:

static zend_bool populate_raw_post_data(TSRMLS_D)
{
// not a post, empty request - return FALSE
if (!SG(request_info).request_body) {
return (zend_bool) 0;
}

// if always_populate_raw_post_data=0 then
// if we don't know how to parse the post (unknown mimetype) return TRUE
// otherwise (known mimetype) return FALSE
if (!PG(always_populate_raw_post_data)) {
return (zend_bool) !SG(request_info).post_entry;
}

// if always_populate_raw_post_data > 0 return TRUE
// if always_populate_raw_post_data < 0 return FALSE
return (zend_bool) (PG(always_populate_raw_post_data) > 0);
}

也就是说,将 always_populate_raw_post_data 设置为 0 仍然可以填充未知内容类型。您必须使用负值才能完全跳过它。

现在是 documented在手册中:

The preferred method for accessing raw POST data is php://input, and $HTTP_RAW_POST_DATA is deprecated in PHP 5.6.0 onwards. Setting always_populate_raw_post_data to -1 will opt into the new behaviour that will be implemented in a future version of PHP, in which $HTTP_RAW_POST_DATA is never defined.

关于php - 为什么调用 $HTTP_RAW_POST_DATA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com