最近在完成一個功能時碰到一個瀏覽器413的HTTP錯誤
這邊需要上傳3M以內的文件,上傳一個2.6M的文件,報413 request Entity too Large錯誤,下面給出解決方式。
經過排查,發現nginx服務器錯誤,是因為請求長度超過了nginx默認的最大客戶端最大請求大小。
post請求:
修改nginx.conf里面的幾個相關的配置參數
client_body_buffer_size 10m(配置請求體緩存區大小, 不配的話)
client_max_body_size 20m(設置客戶端請求體最大值)
client_body_temp_path /data/temp (設置臨時文件存放路徑。只有當上傳的請求體超出緩存區大小時,才會寫到臨時文件中,注意臨時路徑要有寫入權限)
如果上傳文件大小超過client_max_body_size時,會報413 entity too large的錯誤。
在nginx中client_max_body_size的默認配置是1M。
我這邊,所以在nginx.conf找到http,加入 client_max_body_size 8M;? 在php.ini中設置upload_max_filesize以及post_max_size的值為8M,重啟nginx和php服務就可以了。
業務需要,所以設置為8M,在PHP代碼中直接限制文件上傳大小就可以了。
還有針對get的解決方法,可以參考一下http://blog.csdn.net/u012814506/article/details/47761429
在此附上PHP中$_FILES中error返回值詳解
$_FILES['files'] ['error']==0代表一切正常,其它數值的含義如下。
?1: 文件大小超出了服務器的空間大小
?2: 要上傳的文件大小超出瀏覽器限制
?3: 文件僅部分被上傳
?4: 沒有找到要上傳的文件
?5: 服務器臨時文件夾丟失
?6:文件寫入到臨時文件夾出錯
?7:文件寫入失敗
?8:php文件上傳擴展沒有打開