我已經在 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,然后將它們解壓縮到每個請求的服務器。
運行腳本來解壓縮文件并執行操作。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消