1. 為什麼修改了php.ini後上傳文件還是失敗
上次文件除了你設置的那些參數以為,還取決於網頁端的頁面設置。
在form表單中有項隱藏項
<input type="hidden" name="MAX_FILE_SIZE" value="10485761" />
該項允許上傳的最大文件為10M
另外由於上傳10M的文件一般需要花很長時間,所以在php.ini中設置腳本執行時間也要注意,盡量設置得長一些,不然文件還沒傳好,腳本執行時間超過了,也會報錯。
腳本時間參數:max_execution_time
還有上傳文件由於會用到內存,因此在php.ini內給腳本分配的內存也要超過10m
內存設置參數:memory_limit
如果還是不行,請把你的錯誤結果貼出來。
2. php文件上傳在php.ini中都設置了 post為150M 上傳100M 時間設置0,為什麼我上傳5M文件還是顯示錯誤1,
關於大文件的上傳,需要做如下修改:
打開php.ini,首先找到
file_uploads = on ;是否允許通過HTTP上傳文件的開關。默認為ON即是開
upload_tmp_dir ;文件上傳至伺服器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
upload_max_filesize = 8m ;望文生意,即允許上傳文件大小的最大值。默認為2M
post_max_size = 8m ;指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認為8M
一般地,設置好上述四個參數後,上傳<=8M的文件是不成問題,在網路正常的情況下。
但如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通。
進一步配置以下的參數
max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒
max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒
memory_limit = 8m ;每個PHP頁面所吃掉的最大內存,默認8M
把上述參數修改後,在網路所允許的正常情況下,就可以上傳大體積文件了
max_execution_time = 600
max_input_time = 600
memory_limit = 32m
file_uploads = on
upload_tmp_dir = /tmp
upload_max_filesize = 32m
post_max_size = 32m
3. 求php怎麼實現web端上傳超大文件
加大PHP上傳文件大小的限制,是通過修改PHP.INI文件來實現,但是這個支持是有限度的,因為WEB協議本為下載而生,超大文件的上傳是FTP的專利。
PHP用超級全局變數數組$_FILES來記錄文件上傳相關信息的。
1.file_uploads=on/off
是否允許通過http方式上傳文件
2.max_execution_time=30
允許腳本最大執行時間,超過這個時間就會報錯
3.memory_limit=50M
設置腳本可以分配的最大內存量,防止失控腳本佔用過多內存,此指令只有在編譯時設置了
--enable-memory-limit標志的情況下才生效
4.upload_max_filesize=20M
允許上傳文件的最大大小,此指令必須小於post_max_size
5.upload_tmp_dir
上傳文件臨時存放目錄
6.post_max_size=30M
允許post方式可以接受最大大小
$_FILES['myFile']['name'] 客戶端上次文件的原始名稱。
$_FILES['myFile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上傳文件的大小,單位為位元組。
$_FILES['myFile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名,一般是系統默認。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函數設置是不起作用的。
$_FILES['myFile']['error'] 和該文件上傳相關的狀態碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以後成了常量)
UPLOAD_ERR_OK
值:0; 沒有錯誤發生,文件上傳成功。
UPLOAD_ERR_INI_SIZE
值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上傳。
UPLOAD_ERR_NO_FILE
值:4; 沒有文件被上傳。
值:5; 上傳文件大小為0.
文件被上傳結束後,默認地被存儲在了臨時目錄中,這時您必須將它從臨時目錄中刪除或移動到其它地方,如果沒有,則會被刪除。
也就是不管是否上傳成功,腳本執行完後臨時目錄里的文件肯定會被刪除。
附:修改PHP上傳文件大小限制的方法
1. 一般的文件上傳,除非文件很小.就像一個5M的文件,很可能要超過一分鍾才能上傳完.
但在php中,默認的該頁最久執行時間為 30 秒.就是說超過30秒,該腳本就停止執行.
這就導致出現 無法打開網頁的情況.這時我們可以修改 max_execution_time
在php.ini里查找
max_execution_time
默認是30秒.改為
max_execution_time = 0
0表示沒有限制
2. 修改 post_max_size 設定 POST 數據所允許的最大大小。此設定也影響到文件上傳。
php默認的post_max_size 為2M.如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會為空.
查找 post_max_size .改為
post_max_size = 150M
3. 很多人都會改了第二步.但上傳文件時最大仍然為 8M.
為什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的文件的最大大小。
查找upload_max_filesize,默認為8M改為
upload_max_filesize = 100M
另外要說明的是,post_max_size 大於 upload_max_filesize 為佳.
4. file;上傳文件超過了php.ini中的設置最大值 怎麼解決
方法一、修改PHP.INI文件,設置更大的上傳參數,相關的參數如下:
upload_max_filesize = 32M
這個修改要伺服器管理員才有許可權,普通用戶需要聯系開發商管理員。
方法二、放棄大文件的存檔
5. 文件是空php.ini禁止了上傳,或其中post_max_size的值小於upload_max_filesize的值。
這個應該是上傳文件超過了2M,即PHP默認的最大上傳大小,你可以設置下。
配置php.ini文件 (以上傳500M以下大小的文件為例)
查找以下選項並修改->
file_uploads = On ;打開文件上傳選項
upload_max_filesize = 500M ;上傳文件上限
如果要上傳比較大的文件,僅僅以上兩條還不夠,必須把伺服器緩存上限調大,把腳本最大執行時間變長
post_max_size = 500M ;post上限
max_execution_time = 1800 ; Maximum execution time of each script, in seconds腳本最大執行時間
max_input_time = 1800 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)內存上限
參考:http://www.jb51.net/article/18975.htm
6. php如何實現文件上傳啊
PHP一般使用POST方法上傳文件,下面是一個簡單的文件上傳示例,裡面有相關的注釋:
up.htm文件:
----------
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>UpSample</title>
</head>
<body>
<formaction="up.php"method="post"enctype="multipart/form-data">
<!--備注:表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操作,並且method要設置為"post"-->
File:<br/>
<inputtype="file"name="upfile"size="30"><br/>
<!--上傳框要設置type="file"-->
<br/>
<inputtype="submit"value="Upload">
</form>
</body>
</html>
----------
up.php文件
----------
<?php
if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){
//如果有文件上傳
//is_uploaded_file--判斷文件是否是通過HTTPPOST上傳的,返回布爾值
//$_FILES['upfilename']['...'],其中的'upfilename'即為上傳框的name屬性
//$_FILES['upfile']['tmp_name']--文件被上傳後在服務端儲存的臨時文件名,一般是系統默認
if(!eregi('pdf',$_FILES['upfile']['type'])){
//我們這里假設你要上傳一個pdf文件
//if(!eregi('pdf',$_FILES['upfile']['type']))這個是判斷上傳文件類型的,是不是pdf文件,當然,若是想判斷是否是jpg文件的話,將pdf改成jpg就可以了,即if(!eregi('jpg',$_FILES['upfile']['type']))
//$_FILES['upfile']['type']是文件的MIME類型,如果瀏覽器提供此信息的話。例如「image/gif」
echo'TheuploadedfileisnotanpdfFile!Pleaseuploadarightfile!';
}else{
$filename=$_FILES['upfile']['name'];
//$filename=$_FILES['upfile']['name'],這里是指定上傳後的文件名,這里使用的仍是原來的文件名字,($_FILES['upfile']['name']是原始文件的名字)
if(move_uploaded_file($_FILES["upfile"]["tmp_name"],dirname(__FILE__)."/upload_file/".$filename)){
//這里就是上傳文件
//dirname(__FILE__)."/upload_file/".$file_name--指定上傳的目標文件,假設你要上傳的目標文件夾upload_file是和當前文件(upload.php)在同一文件夾下
//chmod(dirname(__FILE__)."/upload_file/".$file_name,0444);
//上面注釋掉的是用來改變上傳後文件的屬性,444即只有執行和讀的許可權(看情況加上)
echo$_FILES["upfile"]["name"]."uploadedsucceed!!!";
}else{
echo"Can'tupload!!!";
}
}
}else{
echo"Fileisnotselected";
}
//需要注意的:
/*
在你的up.php同級目錄下建立upload_file文件夾,來存放上傳的文件
在上傳之前要看一下php的配置文件:php.ini中的三處設置
1.是否允許文件上傳:(file_uploads=On)
2.文件上傳的最大size:(upload_max_filesize)
3.post的最大size(post_max_size)這個大小設置成和uplod_max_filesize一樣大或比uplod_max_filesize大
*/
/*
這只是很簡單的一個文件上傳的例子,為了幫助理解,只是判斷了一下上傳文件的類型,還可以使用if語句來判斷上傳文件的大小($_FILES['upfile']['type'])),並進行提示控制等,相關可以查閱$_FILE['upfile']數組的各個值分別代表什麼
*/
?>
----------
可以看看php100裡面的視頻,其中一節就是介紹文件上傳的.:)
7. 如何修改PHP上傳文件大小限制
1. 在php.ini中,做如下修改:x0dx0a file_uploads = onx0dx0a upload_tmp_dir = /home/uploadx0dx0a upload_max_filesize = 4000Mx0dx0a post_max_size = 4000Mx0dx0a 一般地,設置好上述四個參數後,上傳<=8M的文件是不成問題,在網路正常的情況下。x0dx0a 但如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通。除非你的網路真有100M/S的上傳高速,否則你還得關心關心下面的參數:x0dx0a max_execution_time = 600x0dx0a max_input_time = 600x0dx0a memory_limit = 128Mx0dx0ax0dx0a2. 在要確認上傳的