真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

php傳數據的大小 php數據傳輸

如何正確調整PHP上傳附件大小限制

全局控制 php.ini 文件,修改php.ini 文件里面的參數

創(chuàng)新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站設計、成都做網站、扎蘭屯網絡推廣、重慶小程序開發(fā)公司、扎蘭屯網絡營銷、扎蘭屯企業(yè)策劃、扎蘭屯品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯為所有大學生創(chuàng)業(yè)者提供扎蘭屯建站搭建服務,24小時服務熱線:028-86922220,官方網址:www.cdcxhl.com

1、開啟文件上傳

file_uploads = On

2、內存大小

memory_limit = 128M // 在被取消之前,一個腳本可使用多少內存(字節(jié))

3、增加 post 方式提交的數據大小

post_max_size = 32M

4、允許上傳的最大上傳文件大小

upload_max_filesize = 30M

5、最大的輸入時間。一個腳本等待輸入數據的時間有多長(秒)

max_input_time = 60

6、增加進程執(zhí)行的時間。一個腳本可使用多少 CPU 秒

max_execution_time = 300

從邏輯順序上:memory_limit post_max_size upload_max_filesize,再加上一個前提 max_execution_time許可時間足夠長。

參考:

php get傳值最大是多少

各種web開發(fā)語言中,各個頁面之間基本都會進行數據的傳遞,web開發(fā)里面比較常用的數據傳遞方式有get

post,一直以來我都只知道get傳遞的數據量要比post傳遞的數據量要少,所以傳遞大數據量還是要用post,但是 get post

這兩種方式最大能傳遞多少數據呢?一直沒搞清楚。

今天由于工作的需要,還必須得把這個問題搞明白一下了,下面就說說GET與POST傳遞數據的最大長度能夠達到多少吧。

get

是通過URL提交數據,因此GET可提交的數據量就跟URL所能達到的最大長度有直接關系。很多文章都說GET方式提交的數據最多只能是1024字節(jié),而

實際上,URL不存在參數上限的問題,HTTP協(xié)議規(guī)范也沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制

是2083字節(jié)(2K+35字節(jié))。對于其他瀏覽器,如FireFox,Netscape等,則沒有長度限制,這個時候其限制取決于服務器的操作系統(tǒng)。即

如果url太長,服務器可能會因為安全方面的設置從而拒絕請求或者發(fā)生不完整的數據請求。

post

理論上講是沒有大小限制的,HTTP協(xié)議規(guī)范也沒有進行大小限制,但實際上post所能傳遞的數據量大小取決于服務器的設置和內存大小。因為我們一般

post的數據量很少超過MB的,所以我們很少能感覺的到post的數據量限制,但實際中如果你上傳文件的過程中可能會發(fā)現這樣一個問題,即上傳個頭比較

大的文件到服務器時候,可能上傳不上去,以php語言來說,查原因的時候你也許會看到有說PHP上傳文件涉及到的參數PHP默認的上傳有限定,一般這個值是2MB,更改這個值需要更改php.conf的post_max_size這個值。這就很明白的說明了這個問題了。

php檢測上傳文件大小的問題

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

1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認值2M。

2、php.ini:memory_limit 本指令設定了一個腳本所能夠申請到的最大內存字節(jié)數,默認值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 1024000000

Options Indexes FollowSymLinks MultiViews ExecCGI

AllowOverride All

Order allow,deny

Allow from all

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

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

PHP關于文件上傳部分,特別提到表單隱藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文檔中給出的例子如下:

form enctype="multipart/form-data" action="_URL_" method="POST"

input type="hidden" name="MAX_FILE_SIZE" value="30000"

Send this file: input name="userfile" type="file"

input type="submit" value="Send File"

form

Send this file:

這里設置MAX_FILE_SIZE = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預先判斷,如果文件尺寸大于30000字節(jié),則不執(zhí)行實際的POST動作。也就是不往服務器發(fā)送文件內容,而是直接在客戶端提醒用戶“你試圖上傳的文件超過30000字節(jié)”。

這的確是一個非常棒的主張,但在現實中卻暫時無法實現。不是因為這個限制可以“被簡單地繞過”,而是IE和FireFox這兩個主流瀏覽器都不支持這個特性。PHP的這個建議尚未被采納。

MAX_FILE_SIZE還有一個用場:后臺PHP會判斷接收到的文件大小是否大于這個值,如果超出,$_FILES['thisfile']['error']會被設置為UPLOAD_ERR_FORM_SIZE(2),同時放棄保存臨時文件,將$_FILES['thisfile']['size']置0。

這個例子,沒問題,表現正常,當我試圖上傳一個40多K的文件時,PHP程序報告“文件超過MAX_FILE_SIZE”。

但是,如果我們將表單中的MAX_FILE_SIZE從30000減少到1000,情形又如何呢?

上傳800字節(jié)的文件,正常;

上傳40K的文件,PHP報告文件過大,也正常;

上傳3000個字節(jié)的文件,PHP未報告錯誤,它成功保存了文件!出乎意料!

問題就出在main/rfc1867.c中判斷文件是否超長的這部分代碼上。php每次從buffer中讀取FILLUNIT字節(jié)長度的內容后,首先判斷“已經讀到的內容長度(total_bytes)”是否大于MAX_FILE_SIZE,然后再增加“已經讀到的內容長度(total_bytes)”。這樣一來,和預計的結果之間至多會有FILLUNIT字節(jié)的誤差,而FILLUNIT=1024*5=5K。(點擊bug了解詳細內容)

這就是說,當MAX_FILE_SIZE5K時,上傳一個大于MAX_FILE_SIZE,但是小于5K的文件是沒有問題的。

當然,因為這個設置很容易被繞過,所以服務器端編程不應當依賴于MAX_FILE_SIZE。而且,5K到底是個很小的數值,對大多數上傳文件的表單來說沒有影響。

PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的設置,和客戶端上傳給服務器端的流量大小無關。

Apache服務器從客戶端接收長度不超過LimitRequestBody字節(jié)數的請求,然后傳送給php模塊,php模塊再決定是否保存成臨時文件,設置$_FILES全局變量,移交給script進一步處理。

這個Apache的LimitRequestBody選項缺省值=0,允許Request body的最大字節(jié)數是2G(Linux + Apache)

最后還要注意的是:

html本身能夠post數據也是有限制的,不能超過2G。

FTP客戶端有文件偏移指針的2GB邊界限制,未使用特殊編譯flag編譯的ftp服務器端或者客戶端,無論在什么FS中都不支持大于2GB的文件。不知道PHP會不會也有這種情況。


本文標題:php傳數據的大小 php數據傳輸
URL鏈接:http://weahome.cn/article/dopedgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部