我的环境是PHP 5.5.9,Nginx 1.4.6-1ubuntu3.2,localhost。
我正在尝试从PATCH方法获取数据,但这只是返回一个空字符串... 使用POST方法可以正常工作,这是我脚本的一部分:
case 'POST':
case 'PATCH':
$this->data = file_get_contents("php://input");
$ this->使用PATCH方法时数据为空,POST时完成数据,我使用POSTMAN chrome扩展并推送RAW数据(不是multipart / form-data)
我认为Nginx有问题......但日志文件中没有任何内容......
非常感谢任何帮助!
答案 0 :(得分:0)
我最近遇到了类似的问题,尝试访问php://input
以获取PUT请求。问题很简单,我之前已经访问过它(在相关代码之前运行的日志记录函数中)。
POST的行为与其他方法不同,这解释了差异:
注意:在PHP 5.6之前,使用php://输入打开的流只能读取一次;流不支持搜索操作。但是,根据SAPI实现,可能会打开另一个php://输入流并重新开始读取。只有在保存了请求正文数据后才能执行此操作。通常,这是POST请求的情况,但不是其他请求方法,例如PUT或PROPFIND。
来源:http://php.net/manual/en/wrappers.php.php
解决方案很简单:将php://input
的值从初始抓取存储到PHP变量,并且不要尝试为非POST请求多次运行file_get_contents("php://input")
。