编辑:
你正在运行哪个版本的PHP / Apache / LightHTTP?因为之前有这个错误在PHP中出现过,但似乎已经在5.2.13和5.3.2中消失了。
如果上面的链接没有帮助,我想知道PHP确切看到了什么,您能否将此放入您的api并发布结果?(当然要进行编辑)。
$input = file_get_contents('php://input');
$stdin = file_get_contents('php://stdin');
print "FILES: ";
print_r($_FILES);
print("<br>POST: ");
print_r($_POST);
print("<br>input: ".$input);
print("<br>stdin: ".$stdin);
die;
这样我们可以看到PHP看到了什么,如果它没有解码分块编码,那么我们可以手动解码它。
编辑完毕。(为了其他人的参考而保留以下内容)
我假设这是你之前问题的跟进。并且我假设你正在从PHP读取流?
我写了这个几年前,它读取一个分块编码流,然后您可以对输出进行任何操作。如果是大文件,不要将其读入字符串中,而是写入文件。
<?php
define('CRLF', "\r\n");
define('BUFFER_LENGTH', 8192);
$headers = '';
$body = '';
$length = 0;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
do
{
$data = fgets($fp, BUFFER_LENGTH);
if ($data === false || $data == CRLF || feof($fp)) {
break;
}
$headers .= $data;
}
while (true);
do
{
$line = fgets($fp, BUFFER_LENGTH);
if ($line == CRLF) {
continue;
}
$length = hexdec($line);
if (!is_int($length)) {
trigger_error('Most likely not chunked encoding', E_USER_ERROR);
}
if ($line === false || $length < 1 || feof($fp)) {
break;
}
do
{
$data = fread($fp, $length);
$length -= strlen($data);
$body .= $data;
if ($length <= 0 || feof($fp))
{
break;
}
}
while (true);
}
while (true);
?>