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