php無法上傳大檔案完美解決方案
php.ini無法上傳大檔案完美解決辦法
1、開啟php.ini(開啟檔案就不用說了,百度一大堆)
2、尋找post_max_size
表單提交最大數值,此項不是限制上傳單個檔案的大小,而是針對整個表單的提交資料進行限制的
預設為8M,設定為自己需要的值,此參數建議要設定比upload_max_filesize大一些
3、尋找File Uploads
是否允許通過http上傳檔案的開關,確認file_uploads = on
4、尋找upload_tmp_dir
檔案上傳至伺服器上儲存臨時檔案的地方,如果沒指定就會用系統預設的臨時檔案夾
如果系統報錯提示有“XXX臨時目錄XXX”的話,這個目錄就需要你來設定一個有效目錄,沒報錯就不用管
5、尋找upload_max_filesize
允許上傳檔案大小的最大值,預設為2M,設定為自己需要的值此參數建議不要超過post_max_size值,因為它受控於post_max_size值(就算upload_max_filesize設定了1G,而post_max_size只設定了2M時,大於2M的檔案照樣傳不上去,因為它受控於post_max_size值)
6、如果要上傳大於8M的檔案,還需要對下面的參數也進行設定:
尋找max_execution_time = 600 ;每個PHP頁面啟動並執行最大時間值(秒),預設30秒
max_input_time = 600 ;每個PHP頁面接收資料所需的最大時間,預設60秒
memory_limit = 8M ;每個PHP頁面所需要的最大記憶體,預設8M
nginx法上傳大檔案完美解決辦法
1.client_body_buffer_size 盡量設定的大點,這是基於速度的考慮,如果因為設定的過小,導致上傳的檔案老要寫磁碟,那速度就太慢了。
2.client_body_temp_path 路徑要有可寫入權限,這個是明顯的錯誤了。改正了就好
3.client_max_body_size 設定上傳檔案的最大值,這個是基於安全的考慮,我們認為正常使用者不會或者基本不會上傳太大的檔案。
可以設定為client_max_body_size 100m; 或者按照自己的業務來設定這個值。
例子
nginx的配置。
| 代碼如下 |
|
| cd /export/servers/nginx/conf/nginx.conf,在這個設定檔裡面的server段裡面的 location / { root html; index index.html index.htm; client_max_body_size 1000m; } |
加上了client_max_body_size 欄位,怎麼重啟都不行。後來在總設定檔裡面發現了分設定檔:
| 代碼如下 |
|
| sendfileon; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; include domains/*; #include domains/chat.local; #include domains/chat.erp.com; #include domains/support.chat.com; #include douains/chat.com; server { listen 80; server_name localhost; |
於是找到了分設定檔,在分設定檔裡面進行修改。分設定檔配置如下:
| 代碼如下 |
|
server { listen 80; server_name chat.erp.360buy.com; # access_log /export/servers/nginx/logs/chat.erp.360buy.com; location / { proxy_pass http://tomcat; client_max_body_size 1000m; } } |
用/export/servers/nginx/sbin/nginx -s reload重啟下,上傳檔案的大小受限的問題就解決了。
分享下我的解決過程,希望對大家有協助。
如果還是無法解決我們需要看看是不是php表單設定問題
這段代碼分為兩個檔案,一個為upload.html,一個是upload.php
upload.html
其中,
請注意
這是一個標籤,我們要實現檔案的上傳,必須指定為multipart/form-data,否則伺服器將不知道要幹什麼。
值得注意的是檔案upload.html中表單選項 MAX_FILE_SIZE 的隱藏範圍,通過設定其Value(值)可以限制上傳檔案的大小。
MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望於該值。實際上,PHP 設定中的上傳檔案最大值,是不會失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因為它可以避免使用者在花時間等待上傳大檔案之後才發現該檔案太大了的麻煩。
upload.php
| 代碼如下 |
|
$f=&$HTTP_POST_FILES['Myfile']; $dest_dir=’uploads’;//設定上傳目錄 $dest=$dest_dir.’/’.date("ymd")."_".$f['name'];//設定檔案名稱為日期加上檔案名稱避免重複 $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//設定上傳的檔案的屬性 或者 |
以上範例中 $_FILES 數組的內容如下所示。我們假設檔案上傳欄位的名稱為 userfile(名稱可隨意命名)
http://www.bkjia.com/PHPjc/898886.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/898886.htmlTechArticlephp無法上傳大檔案完美解決方案 php.ini無法上傳大檔案完美解決辦法 1、開啟php.ini(開啟檔案就不用說了,百度一大堆) 2、尋找post_max_size 表...