Codeigniter 3.1.6 AWS服务器上传Zip文件报ERR_CONNECTION_ABORTED错误
解决CodeIgniter 3.1.6在AWS服务器上传Zip/RAR文件时出现ERR_CONNECTION_ABORTED的问题
我之前碰到过几乎一模一样的场景——本地测试完全正常,一部署到AWS就卡壳在大压缩包上传上,大概率是服务器层面的限制或者CI配置的细节没匹配上,给你几个针对性的排查和解决方向:
1. 先检查AWS服务器的PHP核心配置限制
AWS的EC2或者弹性Beanstalk默认的PHP上传相关参数宽松度通常比本地环境低,必须调整以下几个关键参数:
upload_max_filesize: 要大于等于你CI配置里的max_size(注意CI的max_size单位是KB,你设的5000000KB≈4.76GB,所以PHP这个参数至少要设为5G)post_max_size: 这个值必须比upload_max_filesize大,建议设为6G,因为POST请求还包含表单其他数据max_execution_time: 大文件上传需要更长时间,默认30秒肯定不够,建议设为300(5分钟)max_input_time: 同样调整为300以上
修改方式:
如果是EC2+Apache环境,找到php.ini文件(路径通常是/etc/php/7.x/apache2/php.ini,根据你的PHP版本调整),修改后重启Apache:
sudo service apache2 restart
如果是弹性Beanstalk,可以通过.ebextensions配置文件批量设置,创建.ebextensions/php-settings.config文件:
files: "/etc/php.d/99-custom.ini": mode: "000644" owner: root group: root content: | upload_max_filesize = 5G post_max_size = 6G max_execution_time = 300 max_input_time = 300
2. 优化CI上传配置的冗余项
你的配置里max_width和max_height是针对图片文件的校验规则,对Zip/RAR完全无效,建议去掉避免不必要的校验逻辑干扰:
$config['allowed_types'] = 'zip|rar'; $config['max_size'] = '5000000'; // 注意单位是KB,若不是必须这么大,可先改成102400(100MB)测试是否能上传成功 // 移除max_width和max_height配置 $this->load->library('upload', $config);
3. 检查AWS负载均衡或Nginx的超时限制
如果你的服务器前面挂了ELB(弹性负载均衡)或者用Nginx做反向代理,这些服务也会有超时限制:
- ELB默认空闲超时是60秒,大文件上传肯定不够,需要在ELB控制台把空闲超时调整为300秒以上
- 如果是Nginx,需要修改
client_max_body_size(设为6G左右),同时调整proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout都为300秒,修改后重启Nginx:
sudo service nginx restart
4. 补充验证MIME类型配置
你修改的mimes.php配置基本没问题,可以再补充几个常见的Zip MIME类型,确保覆盖所有识别场景:
'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/s-compressed', 'multipart/x-zip','application/octet-stream', 'application/vnd.ms-office', 'application/x-compressed')
另外,上传时可以临时打印服务器识别的文件MIME类型,方便排查匹配问题:
// 替换成你的文件上传字段名 echo $_FILES['file_field_name']['type'];
5. 检查服务器磁盘空间
AWS服务器磁盘空间不足也会导致上传失败,用命令快速检查:
df -h
如果空间不足,及时扩容或者清理日志、无用文件即可。
按上面的步骤逐一排查,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Alisa
相关产品推荐
相关产品推荐

