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

我已经在 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 = 5000M

commands:

    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() 快照:

https://img.mukewang.com/64faddfd00018b4906510193.jpg

万千封印
浏览 87回答 1
1回答

慕桂英3389331

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,然后将它们解压缩到每个请求的服务器。运行脚本来解压缩文件并执行操作。
打开App,查看更多内容
随时随地看视频慕课网APP