2011-10-13 54 views
34

在我的網站的主機,我已經看到了(通過的phpinfo)是PHP的post_max_size覆蓋的upload_max_filesize

  • 的post_max_size = 8Mb的
  • 的upload_max_filesize = 16Mb的

這讓我覺得我應該是能夠以16Mb那樣大的文件上傳。 但是,當我通過post方法執行此操作(正常情況下)時,post_max_size接管並聲明我發送的太多。

什麼是允許發送一個大到16Mb的文件的方法? GET - PUT - 其他?

希望有人能爲我澄清這一點。

西蒙

回答

9

的通常方法來發送文件上傳POST,因此也post_max_size應爲16 MB或更多。

順便說一句,memory_limit也起作用。它應該大於16Mb,但由於默認值爲128Mb,因此您不會看到此問題。例如php.ini配置:

post_max_size = 16M 
upload_max_filesize = 16M 
memory_limit = 128M 

這些變化在php.ini值,如果你已經訪問它,否則,你可以嘗試改變他們在.htaccess文件。

php_value upload_max_filesize 16M 
php_value post_max_size 16M 

這將工作僅在AllowOverride設置允許它。否則,你必須問你的託管公司。

66

upload_max_filesize是任何單個文件的限制。 post_max_size是請求的整個範圍的限制,其中可能包含多個文件。

鑑於post_max_size = 20Mupload_max_filesize = 6M您可以上傳最多3個6M的文件。如果改爲post_max_size = 6Mupload_max_filesize = 20M那麼您只能在觸碰post_max_size之前上傳一個6M文件。 upload_max_size>post_max_size沒有幫助。如何識別post_max_size$_POST$_FILES將爲空,但$_SERVER['CONTENT_LENGTH']將> 0。如果客戶只是沒有上傳任何職務變量或文件,然後$_SERVER['CONTENT_LENGTH']爲0。

5

你的服務器配置設置允許用戶上傳文件高達16MB(因​​爲你已經設置upload_max_filesize = 16MB)但是post_max_size接受數據後僅高達8MB。這就是它拋出錯誤的原因。

official PHP site引用:

  1. 要上傳大文件,post_max_size設置的值必須大於upload_max_filesize。

  2. memory_limit應該比post_max_size要

你應該總是設置你的post_max_size值大於upload_max_filesize的值越大。