php 無法上傳大文件完美解決方案
來源:易賢網 閱讀:706 次 日期:2014-12-09 11:19:33
溫馨提示:易賢網小編為您整理了“php 無法上傳大文件完美解決方案”,方便廣大網友查閱!

php.ini無法上傳大文件完美解決辦法

1、打開php.ini(打開方式就不用說了,百度一大堆)

2、查找post_max_size

表單提交最大數(shù)值,此項不是限制上傳單個文件的大小,而是針對整個表單的提交數(shù)據進行限制的

默認為8m,設置為自己需要的值,此參數(shù)建議要設置比upload_max_filesize大一些

3、查找file uploads

是否允許通過http上傳文件的開關,確認file_uploads = on

4、查找upload_tmp_dir

文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統(tǒng)默認的臨時文件夾

如果系統(tǒng)報錯提示有“xxx臨時目錄xxx”的話,這個目錄就需要你來設置一個有效目錄,沒報錯就不用管

5、查找upload_max_filesize

允許上傳文件大小的最大值,默認為2m,設置為自己需要的值此參數(shù)建議不要超過post_max_size值,因為它受控于post_max_size值(就算upload_max_filesize設置了1g,而post_max_size只設置了2m時,大于2m的文件照樣傳不上去,因為它受控于post_max_size值)

6、如果要上傳大于8m的文件,還需要對下面的參數(shù)也進行設置:

查找max_execution_time = 600 ;每個php頁面運行的最大時間值(秒),默認30秒

max_input_time = 600 ;每個php頁面接收數(shù)據所需的最大時間,默認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; 或者按照自己的業(yè)務來設置這個值。

例子

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 字段,怎么重啟都不行。后來在總配置文件里面發(fā)現(xiàn)了分配置文件:

代碼如下:

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;

client_max_body_size 1000m;

}

}

用/export/servers/nginx/sbin/nginx -s reload重啟下,上傳文件的大小受限的問題就解決了。

分享下我的解決過程,希望對大家有幫助。

如果還是無法解決我們需要看看是不是php表單設置問題

這段代碼分為兩個文件,一個為upload.html,一個是upload.php

upload.html

代碼如下:

<form enctype=multipart/form-data action=upload.php method=post>

<input type=hidden name=max_file_size value=100000>

<input name=userfile type=file>

<input type=submit value=上傳文件>

</form>

其中,

請注意

這是一個標簽,我們要實現(xiàn)文件的上傳,必須指定為multipart/form-data,否則服務器將不知道要干什么。

值得注意的是文件upload.html中表單選項 max_file_size 的隱藏值域,通過設置其value(值)可以限制上載文件的大小。

max_file_size 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望于該值。實際上,php 設置中的上傳文件最大值,是不會失效的。但是最好還是在表單中加上 max_file_size,因為它可以避免用戶在花時間等待上傳大文件之后才發(fā)現(xiàn)該文件太大了的麻煩。

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);//設定上傳的文件的屬性

或者

<?copy($_files[myfile][tmp_name],$_files[myfile][name]);?>

以上范例中 $_files 數(shù)組的內容如下所示。我們假設文件上傳字段的名稱為 userfile(名稱可隨意命名)

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:php 無法上傳大文件完美解決方案

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網