使用file_get_contents('php://input')处理POST请求始终返回空值的问题
解决PHP REST API中
file_get_contents("php://input")返回空的问题 核心原因:请求参数传递方式错误
你在Postman里把参数放在URL的查询字符串(localhost/rest_api_test/listings?name="new"&id=12345)里,这是GET请求的传参方式,而php://input是用来读取**POST请求体(Request Body)**里的数据的,自然会返回空字符串。
正确的操作步骤
- 在Postman中确认请求方法选择为
POST - 切换到
Body标签页,选择raw格式,然后在下拉菜单中选JSON - 在输入框中写入JSON格式的请求数据,比如:
{ "name": "new", "id": 12345 }
- 发送请求后,
file_get_contents("php://input")就能正确读取到请求体中的JSON数据了。
其他可能的排查点
- 检查PHP配置:打开
php.ini,确认enable_post_data_reading设置为On,如果该选项为Off,会导致无法读取请求体数据。 - 避免重复读取:
php://input只能被读取一次,如果你的代码中提前使用了$_POST、fopen("php://input")或其他方式读取过,后续再调用file_get_contents就会返回空。 - 确认请求头:确保请求头包含
Content-Type: application/json,Postman在选择raw-JSON格式时会自动添加,但如果手动修改过需要检查。
内容的提问来源于stack exchange,提问作者DouxDoux
相关产品推荐
相关产品推荐

