Apache+PHP 解決上傳檔案大小限制的問題____PHP

來源:互聯網
上載者:User

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

1、php.ini:upload_max_filesize
所上傳的檔案的最大大小。預設值2M。

2、php.ini:memory_limit
本 指令設定 了一個指令碼所能夠申請到的最大記憶體位元組數,預設值8M。如果不需要任何記憶體上的限制,必須將其設為 -1。如果記憶體不夠,則可能出現錯誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

一般匯入資料庫時,如果資料庫太大,就會報錯,改這個就可以

3、php.ini:post_max_size
設定POST資料所允許的最大大小。此設定也影響到檔案上傳。要上傳大檔案,該值必須大於 upload_max_filesize。

4、php.ini:max_execution_time = 30 ;
Maximum execution time of each script, in seconds

5、php.ini:max_input_time = 60 ;
Maximum amount of time each script may spend parsing request data

6、如果用到mysql的BLOB進行二進位檔案儲存,則需要設定my.ini:max_allowed_packet=xxM

7、httpd.conf
在 Apache 裡面有一個選項是 LimitRequestBody, 這個選項可以限制使用者送出的 HTTP 要求內容。這個選項可以在 .htaccess 或 httpd.conf 裡使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。

LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)

例如要在目錄 D:/AppServ/www 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句:

LimitRequestBody 1024000000Options FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all

Apache伺服器從用戶端接收長度不超過LimitRequestBody位元組數的請求,然後傳送給php模組,php模組再決定是否儲存成臨時檔案,設定$_FILES全域變數,移交給script進一步處理。

最後還要注意的是:
html本身能夠post資料也是有限制的,不能超過2G。

FTP用戶端有檔案位移指標的2GB邊界限制,未使用特殊編譯flag編譯的ftp伺服器端或者用戶端,無論在什麼FS中都不支援大於2GB的檔案。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.