簡體   English   中英

PHP AWS Elastic Beanstalk - 不能發布超過 2GB 的文件

[英]PHP AWS Elastic Beanstalk - Cannot post file more than 2GB

我在 Elastic Beanstalk 中部署了一個應用程序,更改了一些配置,以便我可以上傳更大的文件並重新啟動 nginx 服務器。 當我上傳一個小於 2 GB 的文件時,它已成功上傳。 但是,當我上傳超過 2 GB 的文件時,它不會成功上傳。 以下是我在 /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() 快照:

在此處輸入圖像描述

我哪里錯了? 請幫助我

PHP 設置

您的 PHP 設置是絕對正確的,沒有錯誤是設置。

上傳錯誤不是 PHP

根據您發布的圖片,錯誤代碼即 7 這意味着

UPLOAD_ERR_CANT_WRITE - 7; 無法將文件寫入磁盤。 在 PHP 5.1.0 中引入

這意味着您上傳的代碼是正確的,但在系統上寫入文件時它失敗了。

Apache 設置

限制請求體

該指令指定請求正文中允許的從 0(表示無限)到 2147483647 (2GB) 的字節數。

LimitRequestBody 指令允許用戶在給出指令的上下文(服務器、每個目錄、每個文件或每個位置)內設置 HTTP 請求消息正文的允許大小限制。 如果客戶端請求超過該限制,服務器將返回錯誤響應而不是為請求提供服務。 正常請求消息正文的大小將根據資源的性質和該資源允許的方法而有很大差異。 CGI 腳本通常使用消息正文來檢索表單信息。 PUT 方法的實現將需要一個至少與服務器希望為該資源接受的任何表示一樣大的值。

該指令使服務器管理員可以更好地控制異常客戶端請求行為,這可能有助於避免某些 forms 的拒絕服務攻擊。

解決方案:

您不能通過 PHP 發布/上傳超過 2 GB 的文件,因為 Apache 服務器不會讓它這樣做。

唯一的解決方案是您可以使用 zip 並在執行 zip 時將文件拆分為每個文件小於 2 GB,然后將它們解壓縮到每個請求的服務器。

運行腳本以解壓縮文件並執行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM