我有一个网站,用户可以在其中将图像上传到托管的Apache / PHP服务器。 如果文件上传时间少于20秒,则一切正常。 但是,如果持续时间更长(无论图像文件大小是多少),上传都会失败。
在.htaccess中,我已经拥有:
php_value upload_max_filesize 10M
php_value post_max_size 70M
php_value max_execution_time 180
php_value max_input_time 180
在php脚本中,返回以下结果:
echo "-max_execution_time ".ini_get('max_execution_time');
echo "-max_input_time ".ini_get('max_input_time');
echo "-upload_max_filesize ".ini_get('upload_max_filesize');
echo "-post_max_size ".ini_get('post_max_size');
echo "-memory_limit ".ini_get('memory_limit');
除外:
-max_execution_time 180
-max_input_time 180
-upload_max_filesize 10M
-post_max_size 70M
-memory_limit 128M
这些是请求-全部在22秒后失败,错误为net :: ERR_SPDY_PROTOCOL_ERROR(在Firefox中,它们在20秒后失败)
https://cdn1.imggmi.com/uploads/2019/5/8/fadd31a1a22674cfc3cc4603c97762ff-full.jpg
我在这里缺少什么??? 再一次,如果上传时间少于20秒-一切都很好...
答案 0 :(得分:0)
也许此问题源于apache httpd.conf文件中的“超时”指令。
参见此处:https://httpd.apache.org/docs/2.4/mod/core.html#timeout
答案 1 :(得分:0)
20秒可能意味着Apache模块mod_reqtimeout可能会杀死您的请求,因为如果未配置选项,则这是它的默认值之一(接收请求正文需要20秒)。
https://httpd.apache.org/docs/trunk/mod/mod_reqtimeout.html
我相信mod_reqtimeout是Apache 2.4自动加载的扩展
答案 2 :(得分:0)
由于共享托管,这是服务器问题,我不得不联系托管支持...最终他们做了一些服务器重新配置,现在上传没有中断得这么早...感谢@ m908070 欢呼
答案 3 :(得分:0)
在apache2.4-rails-passenger-aws-ec2项目中,我也遇到了类似的问题。 当我上传大文件(超过500MB)时,它会在20秒后超时。
我试图更改apache的与Timeout相关的配置,但是并没有得到改善。
我将我的应用程序服务器从apache-passenger切换到thin,然后上传没有问题。 自从这个问题最近发布以来,我认为最近发布的apache就有问题。
毕竟,我在执行以下命令时将apache降级了,它工作正常。
$ sudo yum list httpd24
Installed packages
httpd24.x86_64 2.4.39-1.87.amzn1
$ sudo yum erase httpd24 httpd24-tools httpd24-devel
$ sudo yum install httpd24-2.4.38-1.86.amzn1 httpd24-2.4.38-1.86.amzn1 httpd24-devel-2.4.38-1.86.amzn1
在阅读完此问题的答案后,我将apache重新升级到2.4.39,并注释掉了以下行以禁用mod_reqtimeout,它也可以正常工作。
# LoadModule reqtimeout_module modules/mod_reqtimeout.so
我认为问题的原因在于Apache的版本从2.4.38更改为2.4.39。
答案 4 :(得分:0)
关闭该模块-其帮助