为了账号安全,请及时绑定邮箱和手机立即绑定

PHP AWS Elastic Beanstalk - 无法发布超过 2GB 的文件

PHP AWS Elastic Beanstalk - 无法发布超过 2GB 的文件

PHP
万千封印 2023-09-08 16:38:56
我已经在 Elastic Beanstalk 中部署了一个应用程序,更改了一些配置,以便我可以上传更大的文件并重新启动 nginx 服务器。当我上传一个小于2GB的文件时,上传成功。但是,当我上传超过2GB的文件时,却无法上传成功。以下是我在 /etc/nginx/nginx.conf 文件中添加的行:client_max_body_size 7500M;proxy_connect_timeout 1200s;proxy_send_timeout 1200s;proxy_read_timeout 1200s;fastcgi_send_timeout 1200s;fastcgi_read_timeout 1200s;另外,我在 .ebextensions 中添加了配置文件并放入以下内容:files:    "/etc/php.d/99uploadsize.ini":        mode: "000644"        owner: root        group: root        content: |            post_max_size = 5000M            upload_max_filesize = 5000M            memory_limit = 5000Mcommands:    remove_old_ini:        command: "rm -f /etc/php.d/99uploadsize.ini.bak"并尝试了以下内容:files:    "/etc/nginx/conf.d/proxy.conf":        mode: "000755"        owner: root        group: root        content: |            post_max_size = 7500M            upload_max_filesize = 5000M            memory_limit = 7500M            client_max_body_size = 5000M这是 phpinfo() 快照:
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

PHP 设置

您的 PHP 设置绝对正确,设置没有错误。

上传错误不是 PHP

根据您发布的图片,错误代码为 7,这意味着

上传_ERR_CANT_WRITE - 7;无法将文件写入磁盘。PHP 5.1.0 中引入

这意味着您上传的代码是正确的,但在系统上写入文件时失败。

阿帕奇设置

限制请求体

该伪指令指定请求正文中允许的字节数,从 0(表示无限制)到 2147483647 (2GB)。

LimitRequestBody 指令允许用户在给定指令的上下文(服务器、每个目录、每个文件或每个位置)内设置 HTTP 请求消息正文允许的大小限制。如果客户端请求超出该限制,服务器将返回错误响应,而不是为请求提供服务。正常请求消息正文的大小将根据资源的性质以及该资源上允许的方法而有很大差异。CGI 脚本通常使用消息正文来检索表单信息。PUT 方法的实现将需要一个至少与服务器希望接受的该资源的任何表示一样大的值。

该指令使服务器管理员能够更好地控制异常客户端请求行为,这可能有助于避免某些形式的拒绝服务攻击。

解决方案:

您不能通过 PHP 发布/上传超过 2 GB 的文件,因为 Apache 服务器不允许它这样做。

唯一的解决方案是您可以对其进行压缩,并在执行压缩时将每个文件分割为小于 2 GB,然后将它们解压缩到每个请求的服务器。

运行脚本来解压缩文件并执行操作。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信