无法使用 file_get_contents('php://input') 检索原始的 POST 数据

3
这是我的代码。我正在使用POST方法发布我的数据。
$post_body = file_get_contents('php://input');
if(getenv('REQUEST_METHOD') == 'POST'){
    print_r( array( "3","3d"));
}
print_r($post_body);

我正在使用Chrome的Postman测试这段代码,但它没有打印出POST数据,请参见输出图像。

output image

我做错了什么???
编辑
为了展示我是如何解决问题的,我添加了这张图片。

To show

3个回答

5
根据PHP文档

php://input不能与enctype="multipart/form-data"一起使用。

支持不同类型的Content-Type,包括默认的multipart/form-data

因此,请确保在Body选项卡中不要使用multipart/form-data

这不是“multipart/form-data”错误,但你的回答给了我解决问题的线索,谢谢。 - Archish
1
我仍然有同样的问题。@Archish 请告诉我你所做的解决方案。 - Alex Coroza
@boi_echos 你在使用Postman吗?如果是的话,那么我在问题中传递的json应该放在body标签中。如果错误的tab上传递了json,则会出现问题。 - Archish
@boi_echos 我在我的问题中附上了图片,只是这样做我的错误得到了解决,我不确定这是否对你有帮助。如果你创建了新的问题,请在评论中告诉我,我会尝试解决你的问题。 - Archish

2

我在测试Symfony端点时遇到了类似的麻烦,但原因完全不同:

我的类中只有函数。然后我做了一个

var_dump(file_get_contents('php://input'));

在我的函数第一行,也是类中的第一个函数。即使参数正确,它仍然返回空("")。

我的问题是我忘记使用完整路径,但由于Postman尝试运行此函数,让我花费了太多时间才注意到。 希望这可以帮助!


0
我也遇到了同样的问题。我使用的是api.example.fr/api.php而不是https://api.example.fr/api.php。请尝试使用完整的API链接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接