[英]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 設置是絕對正確的,沒有錯誤是設置。
根據您發布的圖片,錯誤代碼即 7 這意味着
UPLOAD_ERR_CANT_WRITE - 7; 無法將文件寫入磁盤。 在 PHP 5.1.0 中引入
這意味着您上傳的代碼是正確的,但在系統上寫入文件時它失敗了。
該指令指定請求正文中允許的從 0(表示無限)到 2147483647 (2GB) 的字節數。
LimitRequestBody 指令允許用戶在給出指令的上下文(服務器、每個目錄、每個文件或每個位置)內設置 HTTP 請求消息正文的允許大小限制。 如果客戶端請求超過該限制,服務器將返回錯誤響應而不是為請求提供服務。 正常請求消息正文的大小將根據資源的性質和該資源允許的方法而有很大差異。 CGI 腳本通常使用消息正文來檢索表單信息。 PUT 方法的實現將需要一個至少與服務器希望為該資源接受的任何表示一樣大的值。
該指令使服務器管理員可以更好地控制異常客戶端請求行為,這可能有助於避免某些 forms 的拒絕服務攻擊。
您不能通過 PHP 發布/上傳超過 2 GB 的文件,因為 Apache 服務器不會讓它這樣做。
唯一的解決方案是您可以使用 zip 並在執行 zip 時將文件拆分為每個文件小於 2 GB,然后將它們解壓縮到每個請求的服務器。
運行腳本以解壓縮文件並執行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.