在我们的两台服务器上,我们安装了 Ubuntu LAMP,其中的 PHP 代码旨在允许上传大型图像和音频。我们的一位客户遇到了一个问题,他们无法从办公室的任何计算机上传任何大于 ~4MB 的文件。他们在 FireFox 中收到“连接已重置”此错误,在 Chrome 中收到“错误 101 (net::ERR_CONNECTION_RESET):未知错误”。在 Chrome 中,我可以查看上传百分比,并看到在 7.79MB 文件达到 ~4MB (53%) 左右时上传失败。
这不是速度问题,因为我已经成功从较慢的网络上传文件。
Apache 在日志中没有返回任何错误,并且在访问日志中记录帖子的开始。
PHP.ini 设置为允许文件最大为 500MB,我们其他客户端也这样做,没有任何问题。我还提高了 PHP 的脚本超时时间。
我已经测试了从许多其他位置上传到服务器,没有任何错误;并且我也测试了从客户端位置上传到其他服务,同样没有任何错误。
我真的很困惑,我不知道这是否是服务器错误还是客户端错误,我希望有人可能知道我可以用来测试的东西,或者可能是我可能错过的设置。
答案1
中间是否有防火墙/IPS?我们遇到过同样的问题,某个文件的某个部分在我们的IPS上弹出误报,导致网站访问出现各种中断和挂起。
答案2
并在访问日志中记录帖子的开始
不 - apache 只会在 access_log 中记录请求的完成情况(除非您有类似 mod_security 的东西,可以明确配置为在提交时发布日志)。这意味着您的其他一些断言也可能是错误的。
PHP.ini 设置为允许文件最大为 500MB,我们其他客户端也这样做,没有任何问题。我还提高了 PHP 的脚本超时时间。
apache 的配置是什么?(特别是 LimitRequestBody、LimitRequestFieldsize、TimeOut)apache 是哪个版本?
我们的一个客户遇到了一个问题...从他们办公室的任何一台电脑...成功地从较慢的网络上传了文件。... 500MB,我们还有其他客户这样做,没有任何问题
这意味着该办公室与您的服务器之间的连接存在一些特定问题 - 例如防火墙。您可以通过使用 wireshark 或类似工具捕获会话来证明这一点(客户端表面上从您的服务器接收 RST - 如果是您的服务器终止连接,您将能够在您的终端看到该数据包 - 如果是其他东西终止连接,那么您将看不到离开您服务器的 RST 数据包)。或者,只需将他们引导到最近的网吧,并让他们从那里尝试确认这是他们的问题。
答案3
您是否检查过存储正在进行的上传文件的位置?/tmp
或者其他?
您是否剩余超过 4 MB 的空间?dmesg
或者系统错误日志是否提供了任何线索?