我有一个用于的网站,可以上传较大的文件(较大的文件大于10或20mb),但不再可以上传。此时,我已经调试了几个小时。
所有php值都设置得非常高:
post_max_size = 512M
upload_max_filesize = 512M
memory_limit = 1024M
max_execution_time = 600
max_input_time = 600
我还在httpd.conf中设置了TimeOut 600
。
从本质上讲,如果我将一个大文件添加到上传字段中,则它永远不会上传。我可以在chrome左下方看到“正在上传(1%)...”,显示文件开始上传。它将计数,有时甚至达到100%,然后从0开始重新计数,然后再次开始计数,最终失败,并显示ERR_CONNECTION_RESET消息。
最终的失败似乎是在随机的时间(有时是24秒,simetimes 3分钟)之后发生的。
我尝试了一个170mb的文件,它将在重新启动前始终达到16%或17%。这总是需要22秒左右的时间。然后,它将从0重新开始并再次计数到16%或17%,然后再次重新开始。最终,它有时会失败,并显示ERR_CONNECTION_RESET消息,有时重新启动一次,有时会重新启动4或5次。
我也尝试了一个30mb的文件。在重新启动之前,这将始终达到100%左右。
df -h显示剩余文件空间,我能够通过SFTP上传文件,确认确实有足够的硬盘空间。
文件也可以在开发服务器上使用完全相同的应用程序上传,因此我可以排除任何应用程序问题。
较小的文件也可以在生产服务器上正常上传,我尝试了3或5mb的文件,没有问题。
我能够执行以下代码:
echo "start";
sleep(60);
echo "stop";
在生产上没有任何麻烦,因此它不会使所有请求都超时,而只是上载。
我尝试了多种浏览器,并且这发生在多个客户端位置。
我可以在/ var / log / httpd中找到的任何日志中都没有错误。
我没有运行Mod安全性。在我的应用程序中,没有任何地方会覆盖任何php设置。这是apache和php的相当标准的安装。
生产服务器是运行Apache / 2.4.39的Amazon Linux,我已经在php 7.1和php 7.2上对其进行了尝试,并且都使用mod_php获得了相同的结果。
我正好进入本期的“撞墙撞墙”阶段。有人有什么想法可以调试吗?
答案 0 :(得分:0)
最后使它起作用。感谢net::ERR_CONNECTION_RESET when large file takes longer than a minute
我必须将RequestReadTimeout标头= 0体= 0添加到我的httpd.conf文件中
它不能在vhost定义内,至少我在几个小时前尝试过,但一无所获。但是,转回原处,然后在httpd.conf中再次尝试,它成功了。
TG。