Friday, April 26, 2024

修改PHP上傳文件大小限制

一、限制PHP上傳文件大小的因素

在用PHP進行文件上傳的操作中,需要知道怎麼控制上傳文件大小的設置,而文件可傳大小是受到多種因素制約的,現總結如下:

1、php.ini

upload_max_filesize 所上傳的文件的最大大小。默認值2M。

memory_limit 本指令設定了一個腳本所能夠申請到的最大內存字節數,默認值8M。如果不需要任何內存上的限制,必須將其設為 -1。如果內存不夠,則可能出現錯誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

post_max_size 設定POST數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。

max_execution_time = 30 ; Maximum execution time of each script, in seconds

max_input_time = 60 ; Maximum amount of time each script may spend parsing request data

2、MySQL/MariaDB

如果用到MySQL/MariaDB的BLOB進行二進制文件存儲,則需要設置my.ini:max_allowed_packet=xxM

3、httpd.conf

在 Apache 裡面有一個選項是 LimitRequestBody,這個選項可以限制用戶送出的 HTTP 請求內容。這個選項可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)。
例如要在目錄 D:/AppServ/www 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句:

如果透過 .htaccess 設定,儲存檔案後會立即生效;如透過 httpd.conf 設定,須要重新啟動 Apache。

二、通過Webmin修改PHP上傳文件大小限制

除了可以使用Putty和WinSCP等軟件連接VPS修改上述文件之外,還可以使用主機面板如Webmin/Virtualmin來修改,方法如下:

Webmin ==> 其他 ==> PHP Configuration ==> Manage ==> Resource Limits

Virtualmin ==> 服務 ==> PHP 5 Configuration ==> Resource Limits

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.