《PHP編程:配置php.ini實(shí)現(xiàn)PHP文件上傳功能》要點(diǎn):
本文介紹了PHP編程:配置php.ini實(shí)現(xiàn)PHP文件上傳功能,希望對您有用。如果有疑問,可以聯(lián)系我們。
昨天分享了在PHP網(wǎng)站開發(fā)中如安在php.ini中配置實(shí)現(xiàn)session功能的PHP教程,今天繼續(xù)分享在利用PHP實(shí)現(xiàn)文件上傳功能時幾點(diǎn)關(guān)鍵php.ini的配置.PHP實(shí)戰(zhàn)
說到在php.ini中的文件上傳的配置,其實(shí)在之前介紹PHP文件上傳功能代碼實(shí)例教程以及Jquery AjaxUpload實(shí)現(xiàn)文件上傳功能代碼實(shí)例教程時我都有所提及.PHP文件上傳功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等選項(xiàng).PHP實(shí)戰(zhàn)
php.ini中文件上傳功能配置選項(xiàng)闡明PHP實(shí)戰(zhàn)
打開php.ini配置文件找到File UploadsPHP實(shí)戰(zhàn)
file_uploads = OnPHP實(shí)戰(zhàn)
默認(rèn)允許HTTP文件上傳,此選項(xiàng)不克不及設(shè)置為OFF.PHP實(shí)戰(zhàn)
upload_tmp_dir =PHP實(shí)戰(zhàn)
默認(rèn)為空,此選項(xiàng)在手動配置PHP運(yùn)行環(huán)境時,也容易遺忘,如果不配置這個選項(xiàng),文件上傳功能就無法實(shí)現(xiàn),這個選項(xiàng)設(shè)置的是文件上傳時存放文件的臨時目錄,你必須給這個選項(xiàng)賦值,好比upload_tmp_dir ='/leapsoulcn',代表在C盤目錄下有一個leapsoulcn目錄,和session配置一樣,如果你是在linux環(huán)境下,你必須賦予這個目錄可寫權(quán)限.PHP實(shí)戰(zhàn)
如何上傳跨越8M的大文件?PHP實(shí)戰(zhàn)
上傳年夜文件主要涉及配置upload_max_filesize和post_max_size兩個選項(xiàng).PHP實(shí)戰(zhàn)
php.ini配置文件中的默認(rèn)文件上傳大小為2M,php初學(xué)者容易犯的一個錯誤是在編寫文件上傳功能時通過設(shè)置上傳文件最大大小的表單區(qū)域,即允許上傳文件的最大值,max_file_size(隱藏值域)的值來規(guī)定上傳文件的大小,其實(shí)一般別人可以繞過這個值,所以平安起見,最好是在php.ini配置文件中配置upload_max_filesize選項(xiàng),設(shè)定文件上傳的大小.PHP實(shí)戰(zhàn)
默認(rèn)upload_max_filesize = 2M,即文件上傳的大小為2M,如果你想上傳超過8M的文件,好比20M,你必須設(shè)定upload_max_filesize = 20M.PHP實(shí)戰(zhàn)
但是光設(shè)置upload_max_filesize = 20M還是無法實(shí)現(xiàn)大文件的上傳功能,你必需修改php.ini配置文件中的post_max_size選項(xiàng),其代表允許POST的數(shù)據(jù)最大字節(jié)長度,默認(rèn)為8M.如果POST數(shù)據(jù)超出限制,那么$_POST和$_FILES將會為空.要上傳大文件,你必需設(shè)定該選項(xiàng)值大于upload_max_filesize指令的值,我一般設(shè)定upload_max_filesize和post_max_size值相等.另外如果啟用了內(nèi)存限制,那么該值應(yīng)當(dāng)小于memory_limit選項(xiàng)的值.PHP實(shí)戰(zhàn)
文件上傳的其他注意事項(xiàng)PHP實(shí)戰(zhàn)
在上傳大文件時,你會有上傳速度慢的感覺,當(dāng)超過一定的時間,會報腳本執(zhí)行超過30秒的錯誤,這是因?yàn)樵趐hp.ini配置文件中max_execution_time配置選項(xiàng)在作怪,其表示每個腳本最大允許執(zhí)行時間(秒),0 表示沒有限制.你可以適當(dāng)調(diào)整max_execution_time的值,不保舉設(shè)定為0.PHP實(shí)戰(zhàn)
至此,在php.ini配置文件中對文件上傳選項(xiàng)進(jìn)行配置的PHP教程就介紹完畢了,通過上面的步調(diào)實(shí)踐與學(xué)習(xí),再結(jié)合PHP程序,文件上傳功能就可以實(shí)現(xiàn)了.PHP實(shí)戰(zhàn)
下面是一些彌補(bǔ):PHP實(shí)戰(zhàn)
本文介紹了如何配置php.ini實(shí)現(xiàn)PHP文件上傳功能.其中涉及到php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等選項(xiàng),這些選項(xiàng)是文件上傳成敗的關(guān)鍵.我們以php.5.3.5的Windows版本為例闡明.PHP實(shí)戰(zhàn)
php.ini中文件上傳功能配置選項(xiàng)說明
用文本工具(保舉EditPlus)打開php.ini 配置文件,查找 File Uploads ,在這個區(qū)域有以下3個選項(xiàng):PHP實(shí)戰(zhàn)
file_uploads = OnPHP實(shí)戰(zhàn)
是否允許HTTP文件上傳.默認(rèn)值為On允許HTTP文件上傳,此選項(xiàng)不克不及設(shè)置為Off.PHP實(shí)戰(zhàn)
upload_tmp_dir =PHP實(shí)戰(zhàn)
文件上傳的臨時存放目錄.如果沒指定則PHP會使用系統(tǒng)默認(rèn)的臨時目錄.該選項(xiàng)默認(rèn)為空,此選項(xiàng)在手動配置PHP運(yùn)行環(huán)境時,也容易遺忘,如果不配置這個選項(xiàng),文件上傳功能就無法實(shí)現(xiàn),你必須給這個選項(xiàng)賦值,好比upload_tmp_dir = "d:/fileuploadtmp" ,代表在D盤目錄下有一個fileuploadtmp目錄,并且給這目錄讀寫權(quán)限.PHP實(shí)戰(zhàn)
upload_max_filesize = 2MPHP實(shí)戰(zhàn)
上傳文件的最大尺寸.這個選項(xiàng)默認(rèn)值為2M,即文件上傳的大小為2M,如果你想上傳一個50M的文件,你必需設(shè)定 upload_max_filesize = 50M.
但是僅設(shè)置upload_max_filesize = 50M 還是無法實(shí)現(xiàn)大文件的上傳功能,我們還必需修改php.ini文件中的 post_max_size 選項(xiàng).PHP實(shí)戰(zhàn)
繼續(xù)在 php.ini 中查找 Data Handling ,在這個區(qū)域有1個選項(xiàng):PHP實(shí)戰(zhàn)
post_max_size = 8MPHP實(shí)戰(zhàn)
指通過表單POST給PHP的所能接收的最大值,包含表單里的所有值.默認(rèn)為8M.如果POST數(shù)據(jù)超出限制,那么$_POST和$_FILES將會為空.
要上傳大文件,你必須設(shè)定該選項(xiàng)值大于upload_max_filesize選項(xiàng)的值,例如你設(shè)置了upload_max_filesize = 50M ,這里可以把post_max_size = 100M.
另外如果啟用了內(nèi)存限制,那么該值應(yīng)當(dāng)小于memory_limit 選項(xiàng)的值.PHP實(shí)戰(zhàn)
繼續(xù)在 php.ini 中查找 Resource Limits ,在這個區(qū)域有3個選項(xiàng):PHP實(shí)戰(zhàn)
max_execution_time = 30PHP實(shí)戰(zhàn)
每個PHP頁面運(yùn)行的最大時間值(單位秒),默認(rèn)30秒.當(dāng)我們上傳一個較大的文件,例如50M的文件,很可能要幾分鐘才能上傳完,但php默認(rèn)頁面最久執(zhí)行時間為30秒,超過30秒,該腳本就停止執(zhí)行,這就導(dǎo)致出現(xiàn)無法打開網(wǎng)頁的情況.因此我們可以把值設(shè)置的較大些,如 max_execution_time = 600. 如果設(shè)置為0,則表現(xiàn)無時間限制.PHP實(shí)戰(zhàn)
max_input_time = 60PHP實(shí)戰(zhàn)
每個PHP腳本解析哀求數(shù)據(jù)所用的時間(單位秒),默認(rèn)60秒.當(dāng)我們上傳大文件時,可以將這個值設(shè)置的較大些. 如果設(shè)置為0,則表示無時間限制.PHP實(shí)戰(zhàn)
memory_limit = 128MPHP實(shí)戰(zhàn)
這個選項(xiàng)用來設(shè)置單個PHP腳本所能申請到的最大內(nèi)存空間.這有助于防止寫得不好的腳本消耗光服務(wù)器上的可用內(nèi)存.如果不必要任何內(nèi)存上的限制將其設(shè)為 -1.
php5.2.0以前的版本默認(rèn)8M; php.5.2.0版本默認(rèn)為16M.php 5.2.0之后的版本默認(rèn)為 128M;PHP實(shí)戰(zhàn)
php.ini 配置上傳文件功能示例
假設(shè)要上傳一個50M的年夜文件.配置 php.ini 如下:
file_uploads = On
upload_tmp_dir = "d:/fileuploadtmp"
upload_max_filesize = 50M
post_max_size = 100M
max_execution_time = 600
max_input_time = 600
memory_limit = 128MPHP實(shí)戰(zhàn)
提示:需要堅持 memory_limit > post_max_size > upload_max_filesizePHP實(shí)戰(zhàn)
此例僅供參考,你可以依據(jù)實(shí)際情況調(diào)整.
?PHP實(shí)戰(zhàn)
歡迎參與《PHP編程:配置php.ini實(shí)現(xiàn)PHP文件上傳功能》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/13565.html