【发布时间】:2012-11-15 00:21:48
【问题描述】:
可能重复:
Get raw post data
从php://input 读取有效,除非请求正文为multipart/form-data 格式,在这种情况下不会读取任何内容。
我听说php://input 只能从一次读取,我怀疑这可能是造成这种情况的原因(即 PHP 可能在看到 multipart/form-data 之前从 php://input 读取,然后我才能动手它)。但是,在测试中,我发现我可以从流中多次读取而不会出现问题。
有没有办法获取任何格式的请求正文?
这是我目前所得到的:
$body = '';
$handle = fopen('php://input', 'r');
while(!feof($handle)) {
$body .= fread($handle, 1024);
}
【问题讨论】:
-
你是对的,谢谢。可惜它需要这么丑陋的黑客。
-
如果您使用的是 PHP 5.4,您可以尝试 php.net/manual/en/ini.core.php#ini.enable-post-data-reading 但是您必须制作自定义解析器来填充
$_POST和$_FILES