Php 如果';内容类型:application/json';在页眉中

Php 如果';内容类型:application/json';在页眉中,php,amazon-elastic-beanstalk,Php,Amazon Elastic Beanstalk,我注意到我的应用程序中有一个奇怪的bug,它发生在使用AWS Elastic Beanstalk PHP5.4.9 AMI时 提交包含标题'Content-Type:application/json'的GET-AJAX请求时,$\u POST superglobal设置为null。如果删除该标头,它将按预期设置为空白array() 这是预期的行为吗 原来这是PECL的问题。当安装运行PHP5.4的PECL HTTP时,当为GET请求提供“Content-Type:application/json

我注意到我的应用程序中有一个奇怪的bug,它发生在使用AWS Elastic Beanstalk PHP5.4.9 AMI时

提交包含标题
'Content-Type:application/json'
的GET-AJAX请求时,$\u POST superglobal设置为null。如果删除该标头,它将按预期设置为空白
array()


这是预期的行为吗

原来这是PECL的问题。当安装运行PHP5.4的PECL HTTP时,当为GET请求提供“Content-Type:application/json”头时,会导致$\u POST设置为null。删除peclhttp解决了这个问题

归功于Michael@AWS为了这个发现。交叉螺纹:


编辑:由PHP团队修复:

文档中没有任何内容暗示PHP>5.4中会出现这种情况。我没有运行PHP5.4.9。但是,如果您可以通过执行上述操作来复制这一点,我会提交一个bug。我记得在SO上有一个问题也是关于
$\u POST
NULL
。我不知道这是否与AJAX或Json内容类型请求头有关。我不知道这是否已经解决了。我建议您设置一些测试用例,并在这里概述如何复制。顺便说一句:如果您执行GET请求,则没有请求正文,因此没有
内容类型
请求头,因此使用它看起来有点虚假。当然,这并不能解释
$\u POST
NULL
,但是人们可能也不应该期望太多。您是否有一个测试用例来演示这一点?顺便说一句,如果你正在做一个GET,那么$\u POST不应该包含任何内容(尽管我相信它应该始终作为一个空数组存在),我的JS框架(spine.JS)总是包含这个头,不管它是GET还是POST。我的服务器端框架(Symfony2)希望$\u POST始终是一个数组。在AWS将php更新为5.4.9之前,这从来都不是一个问题。我会做更多的测试并报告。看起来好像是PECL HTTP扩展导致了这个问题。