workerman无法下载
现在workerman1.0.9无法下载附件。
Error: Parse Error: Duplicate Content-Length
Request Headers
User-Agent: PostmanRuntime/7.37.3
Accept: /
Postman-Token: 8cb3bf5b-2085-46af-891b-be46c161ebc9
Host: localhost:8000
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
向后台输出了。
1.0.8在nginx下也报错
但改一下还是能用。
responseClass = get_class(response);
logFile = 'D:/Dev/PHP/logfile.log';
file_put_contents(logFile, 'responseClass: ' . responseClass . PHP_EOL, FILE_APPEND);
file_put_contents(logFile, 'getHeader: ' . json_encode(response->getHeader()) . PHP_EOL, FILE_APPEND);
file_put_contents(logFile, 'content: ' . json_encode($content) . PHP_EOL, FILE_APPEND);
$headers = response->getHeader();
if (isset(headers['Content-Length'])) {
unset(headers['Content-Length']);
}
if (responseClass !== 'think\response\File') {
connection->send(new Response(response->getCode(), $response->getHeader(), $content));
}
else {
connection->send(new Response(response->getCode(), $headers, $content));
}
vendor\topthink\framework\src\think\response
下File.php 注释一下部分内容可以下载,比对了版本也没有发现异常。ob相关函数不太熟悉
直接
return download()
就行了我就是return download 后台出现乱码就是缓冲器写到控制台了。比较奇怪的是两个版本没什么大差异,目前先把thinkphp里源码改一改可以了。
- 1
前往