PHP 文件上傳限制

PHP 大文件上傳佔用大量資源,所以須要對上傳的大小進行限制,如下爲相關的三個參數:php

  1. nginx 的 client_max_body_size
  2. php.ini 的 upload_max_filesize
  3. php.ini 的 post_max_size

與以上相對應的三個報錯信息:nginx

  1. 狀態碼 413 Request Entiry Too Large.
  2. Warning: POST Content-Length of 9663102 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
  3. $_FILES['file']['error']==1

nginx錯誤:413 Request Entiry Too Large

client_max_body_size 用於設置客戶端 Request body(請求體)的大小上限,要上傳的文件就在 body 體 中,因此此參數能夠間接的看作是對文件上傳大小的限制。服務器

nginx 服務器經過請求頭的 Content-Length 肯定 body 體的大小。超過設置的上限會返回錯誤碼 413 Request Entity Too Large,將此參數設置爲 0 能夠取消對長度的限制。post

Syntax:    client_max_body_size size;
Default:    
client_max_body_size 1m;
Context:    http, server, location

client_max_body_size 能夠設置在 http、server、location 塊中,因此咱們能夠對域名甚至一個請求地址來提升上傳包的大小值。code

php錯誤:

Warning: POST Content-Length of 9663102 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

此時爲上傳文件大小大於 post_max_sizeserver

php 無警告可是獲取不到上傳的文件

此時 $_FILES['file']['error']==1,錯誤緣由是上傳文件的大小小於 post_max_size 可是大於 upload_max_filesize資源

相關文章
相關標籤/搜索