我写的代码就一句话,
<?php
var_dump($_FILES);
move_uploaded_file($_FILES["upload"]["tmp_name"],"../download/");
echo $_FILES['upload']['error'];
?>
错误提示是0,文件各种信息我也能打印出来,但是文件就是上传不上去,这个到底是什么原因?php.ini里面的默认上传大小是2M,但是我的文件才几十k,谁遇到过这样的问题,求解答。
å¨ç¨PHPè¿è¡æ件ä¸ä¼ çæä½ä¸ï¼éè¦ç¥éæä¹æ§å¶ä¸ä¼ æ件大å°ç设置ï¼èæ件å¯ä¼ 大å°æ¯åå°å¤ç§å ç´ å¶çº¦çï¼ç°æ»ç»å¦ä¸ï¼
1ãphp.ini:upload_max_filesize æä¸ä¼ çæ件çæ大大å°ãé»è®¤å¼2Mã
2ãphp.ini:memory_limit æ¬æ令设å®äºä¸ä¸ªèæ¬æè½å¤ç³è¯·å°çæ大å ååèæ°ï¼é»è®¤å¼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åèï¼åä¸æ§è¡å®é çPOSTå¨ä½ãä¹å°±æ¯ä¸å¾æå¡å¨åéæ件å 容ï¼èæ¯ç´æ¥å¨å®¢æ·ç«¯æéç¨æ·âä½ è¯å¾ä¸ä¼ çæä»¶è¶ è¿30000åèâã
è¿çç¡®æ¯ä¸ä¸ªé常æ£çä¸»å¼ ï¼ä½å¨ç°å®ä¸å´ææ¶æ æ³å®ç°ãä¸æ¯å 为è¿ä¸ªéå¶å¯ä»¥â被ç®åå°ç»è¿âï¼èæ¯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åèçæ件ï¼æ£å¸¸ï¼
ä¸ä¼ 40Kçæ件ï¼PHPæ¥åæ件è¿å¤§ï¼ä¹æ£å¸¸ï¼
ä¸ä¼ 3000个åèçæ件ï¼PHPæªæ¥åé误ï¼å®æåä¿åäºæ件ï¼åºä¹ææï¼
é®é¢å°±åºå¨main/rfc1867.cä¸å¤ææ件æ¯å¦è¶ é¿çè¿é¨å代ç ä¸ãphpæ¯æ¬¡ä»bufferä¸è¯»åFILLUNITåèé¿åº¦çå 容åï¼é¦å å¤æâå·²ç»è¯»å°çå 容é¿åº¦(total_bytes)âæ¯å¦å¤§äºMAX_FILE_SIZEï¼ç¶ååå¢å âå·²ç»è¯»å°çå 容é¿åº¦(total_bytes)âãè¿æ ·ä¸æ¥ï¼åé¢è®¡çç»æä¹é´è³å¤ä¼æFILLUNITåèç误差ï¼èFILLUNIT=1024*5ï¼5Kãï¼ç¹å»bugäºè§£è¯¦ç»å 容ï¼
è¿å°±æ¯è¯´ï¼å½MAX_FILE_SIZE<5Kæ¶ï¼ä¸ä¼ ä¸ä¸ªå¤§äºMAX_FILE_SIZEï¼ä½æ¯å°äº5Kçæ件æ¯æ²¡æé®é¢çã
å½ç¶ï¼å 为è¿ä¸ªè®¾ç½®å¾å®¹æ被ç»è¿ï¼æ以æå¡å¨ç«¯ç¼ç¨ä¸åºå½ä¾èµäºMAX_FILE_SIZEãèä¸ï¼5Kå°åºæ¯ä¸ªå¾å°çæ°å¼ï¼å¯¹å¤§å¤æ°ä¸ä¼ æ件ç表åæ¥è¯´æ²¡æå½±åã
PHPä¸post_max_sizeï¼upload_max_filesize, MAX_FILE_SIZEç设置ï¼å客æ·ç«¯ä¸ä¼ ç»æå¡å¨ç«¯çæµé大å°æ å ³ã
Apacheæå¡å¨ä»å®¢æ·ç«¯æ¥æ¶é¿åº¦ä¸è¶ è¿LimitRequestBodyåèæ°ç请æ±ï¼ç¶åä¼ éç»php模åï¼php模ååå³å®æ¯å¦ä¿åæ临æ¶æ件ï¼è®¾ç½®$_FILESå ¨å±åéï¼ç§»äº¤ç»scriptè¿ä¸æ¥å¤çã
è¿ä¸ªApacheçLimitRequestBodyé项缺çå¼=0ï¼å 许Request bodyçæ大åèæ°æ¯2Gï¼Linux + Apacheï¼
æåè¿è¦æ³¨æçæ¯ï¼
htmlæ¬èº«è½å¤postæ°æ®ä¹æ¯æéå¶çï¼ä¸è½è¶ è¿2Gã
FTP客æ·ç«¯ææ件å移æéç2GBè¾¹çéå¶ï¼æªä½¿ç¨ç¹æ®ç¼è¯flagç¼è¯çftpæå¡å¨ç«¯æè 客æ·ç«¯ï¼æ 论å¨ä»ä¹FSä¸é½ä¸æ¯æ大äº2GBçæ件ãä¸ç¥éPHPä¼ä¸ä¼ä¹æè¿ç§æ åµã
1ãphp.ini:upload_max_filesize æä¸ä¼ çæ件çæ大大å°ãé»è®¤å¼2Mã
2ãphp.ini:memory_limit æ¬æ令设å®äºä¸ä¸ªèæ¬æè½å¤ç³è¯·å°çæ大å ååèæ°ï¼é»è®¤å¼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åèï¼åä¸æ§è¡å®é çPOSTå¨ä½ãä¹å°±æ¯ä¸å¾æå¡å¨åéæ件å 容ï¼èæ¯ç´æ¥å¨å®¢æ·ç«¯æéç¨æ·âä½ è¯å¾ä¸ä¼ çæä»¶è¶ è¿30000åèâã
è¿çç¡®æ¯ä¸ä¸ªé常æ£çä¸»å¼ ï¼ä½å¨ç°å®ä¸å´ææ¶æ æ³å®ç°ãä¸æ¯å 为è¿ä¸ªéå¶å¯ä»¥â被ç®åå°ç»è¿âï¼èæ¯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åèçæ件ï¼æ£å¸¸ï¼
ä¸ä¼ 40Kçæ件ï¼PHPæ¥åæ件è¿å¤§ï¼ä¹æ£å¸¸ï¼
ä¸ä¼ 3000个åèçæ件ï¼PHPæªæ¥åé误ï¼å®æåä¿åäºæ件ï¼åºä¹ææï¼
é®é¢å°±åºå¨main/rfc1867.cä¸å¤ææ件æ¯å¦è¶ é¿çè¿é¨å代ç ä¸ãphpæ¯æ¬¡ä»bufferä¸è¯»åFILLUNITåèé¿åº¦çå 容åï¼é¦å å¤æâå·²ç»è¯»å°çå 容é¿åº¦(total_bytes)âæ¯å¦å¤§äºMAX_FILE_SIZEï¼ç¶ååå¢å âå·²ç»è¯»å°çå 容é¿åº¦(total_bytes)âãè¿æ ·ä¸æ¥ï¼åé¢è®¡çç»æä¹é´è³å¤ä¼æFILLUNITåèç误差ï¼èFILLUNIT=1024*5ï¼5Kãï¼ç¹å»bugäºè§£è¯¦ç»å 容ï¼
è¿å°±æ¯è¯´ï¼å½MAX_FILE_SIZE<5Kæ¶ï¼ä¸ä¼ ä¸ä¸ªå¤§äºMAX_FILE_SIZEï¼ä½æ¯å°äº5Kçæ件æ¯æ²¡æé®é¢çã
å½ç¶ï¼å 为è¿ä¸ªè®¾ç½®å¾å®¹æ被ç»è¿ï¼æ以æå¡å¨ç«¯ç¼ç¨ä¸åºå½ä¾èµäºMAX_FILE_SIZEãèä¸ï¼5Kå°åºæ¯ä¸ªå¾å°çæ°å¼ï¼å¯¹å¤§å¤æ°ä¸ä¼ æ件ç表åæ¥è¯´æ²¡æå½±åã
PHPä¸post_max_sizeï¼upload_max_filesize, MAX_FILE_SIZEç设置ï¼å客æ·ç«¯ä¸ä¼ ç»æå¡å¨ç«¯çæµé大å°æ å ³ã
Apacheæå¡å¨ä»å®¢æ·ç«¯æ¥æ¶é¿åº¦ä¸è¶ è¿LimitRequestBodyåèæ°ç请æ±ï¼ç¶åä¼ éç»php模åï¼php模ååå³å®æ¯å¦ä¿åæ临æ¶æ件ï¼è®¾ç½®$_FILESå ¨å±åéï¼ç§»äº¤ç»scriptè¿ä¸æ¥å¤çã
è¿ä¸ªApacheçLimitRequestBodyé项缺çå¼=0ï¼å 许Request bodyçæ大åèæ°æ¯2Gï¼Linux + Apacheï¼
æåè¿è¦æ³¨æçæ¯ï¼
htmlæ¬èº«è½å¤postæ°æ®ä¹æ¯æéå¶çï¼ä¸è½è¶ è¿2Gã
FTP客æ·ç«¯ææ件å移æéç2GBè¾¹çéå¶ï¼æªä½¿ç¨ç¹æ®ç¼è¯flagç¼è¯çftpæå¡å¨ç«¯æè 客æ·ç«¯ï¼æ 论å¨ä»ä¹FSä¸é½ä¸æ¯æ大äº2GBçæ件ãä¸ç¥éPHPä¼ä¸ä¼ä¹æè¿ç§æ åµã
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2018-04-21
if(is_uploaded_file($_FILES['upload']['tmp_name'])){
if(file_exists($_FILES['upload'][name])){
//文件存在
}else{
if(move_uploaded_file($_FILES['upload']['tmp_name'], './upload/')){
//移动成功
}else{
//移动失败
}
}
}else{
//没有文件上传
}本回答被网友采纳
if(file_exists($_FILES['upload'][name])){
//文件存在
}else{
if(move_uploaded_file($_FILES['upload']['tmp_name'], './upload/')){
//移动成功
}else{
//移动失败
}
}
}else{
//没有文件上传
}本回答被网友采纳
第2个回答 2013-01-02
if($_FILES["upload"]["tmp_name"]){
move_uploaded_file($_FILES["upload"]["tmp_name"], "../download/".$_FILES["upload"]["name"]);
}else{
echo '没有上传文件';
}
move_uploaded_file($_FILES["upload"]["tmp_name"], "../download/".$_FILES["upload"]["name"]);
}else{
echo '没有上传文件';
}
第3个回答 2013-01-01
先在本地测试 确保代码没有问题,然后上传到你上面测试的机子,这样才知道是不是权限问题还是其他问题
第4个回答 2013-01-01
你是在服务器上操作吗??是不是你的上传文件的文件夹的权限不够呢??没有定权限的话就上传不上文件的。。。追问
我所有的文件夹和文件的权限我都修改过了,都有权限。
追答提示什么错误。。。