![Apache PHP-FPM“软件导致连接中止”](https://linux22.com/image/757153/Apache%20PHP-FPM%E2%80%9C%E8%BD%AF%E4%BB%B6%E5%AF%BC%E8%87%B4%E8%BF%9E%E6%8E%A5%E4%B8%AD%E6%AD%A2%E2%80%9D.png)
仅作为自己的提醒,也许对其他人有帮助......
我的 Apacheerror_log
包含以下错误:
- 软件导致连接中止
- 发送请求至:(读取输入旅)时出错
例如:
[Mon Sep 07 12:56:24.267462 2020] [proxy_fcgi:error] [pid 13938:tid 140607124641236] (103)Software caused connection abort: [client 1.1.1.1:9060] AH01075: Error dispatching request to : (reading input brigade), referer: https://example.com/path/
阿帕奇access_log
里面有:
1.1.1.1 - - [2020-09-07 12:56:17] [-] "POST /path/ HTTP/2.0" 400 308 "https://example.com/path/" "Mozilla/5.0 ..."
注意的 HTTP 状态400 Bad Request
,它在 7 秒后发生。
另外,在 PHP 中处理它的地方,我用来register_shutdown_function
创建自己的日志文件,其中详细记录每个请求 - 包括用户 ID、http_response_code()
(在本例中200
)、处理请求所花的时间(0.031
秒)以及发生的时间(稍后的时间12:56:17
)。
这是 Apache/2.4.29 和 PHP-FPM 7.2
答案1
当用户正在上传文件并取消上传时,就会发生这种情况。
部分文件仍然传递给 PHP-FPM,并且 PHP 脚本仍然运行。
PHP 设置$_FILES['name']['error'] === 3
,以指示文件已部分上传;因此,在我的脚本中,我返回了一个 HTML 页面,其中包含有关文件不完整的错误消息(因此200
在我的记录中出现响应)。
我假设Software caused connection abort
和Error dispatching request to : (reading input brigade)
描述了该 HTML 如何没有返回到客户端/浏览器。