php move_uploaded_file无效的严重错误

时间:2013-01-01 19:39:14

标签: file-upload

我的php文件上传存在严重问题。 问题是文件没有从tmp移动到目标目录 这是我的html页面

<form name="f1" method="post" action="handleUpload.php"  enctype="multipart/form-data">
<input type="file" name="htmlfile">
<input type="submit">
</form>

这是我的PHP页面handleUpload.php,

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{

    $arrayKeys=array_keys($_FILES['htmlfile']);
    foreach($arrayKeys as $s)
        echo $s ." : ".$_FILES['htmlfile'][$s]." <br>";
    $name = $_FILES['htmlfile']['name'];
    $size = $_FILES['htmlfile']['size'];        
    $tempName= $_FILES['htmlfile']['tmp_name'];
    list($filePureName, $ext) = explode(".", $name);
    $valid_formats = array("jpg","png", "gif", "bmp","rar","zip");
    $fileObject=fopen($tempName,"r") ;
        echo "test Text" . fgets($fileObject) ."</br>";
    fclose($dstFile) ;
    if($_FILES["htmlfile"]["error"] != 0 ) {
        echo "file error with code " .$_FILES["htmlfile"]["error"];
    }
    if( is_uploaded_file($tempName)){
        echo "<br> upladed to the tmp directory ";
        move_uploaded_file($_FILES["htmlfile"]["tmp_name"],"./".$_FILES["htmlfile"]["name"]) ;
        //move_uploaded_file($_FILES["htmlfile"]["tmp_name"],"upload/".$_FILES["htmlfile"]["name"])
    }

}
else{

    echo "you must visit the HTML upload page first";

}

我得到的输出是

name : numerical_hw1.rar 
type : application/octet-stream 
tmp_name : /tmp/phpK7Gmmf 
error : 0 
size : 34642 
test TextRar!Ïs WÅt K„Á &–Gá@3& numerical_hw1\hw1_q1\numerical_hw1.cpp°¸ EÌÌý•½¦~g†¡¹[•Í…Àk#€Qu{Q|0a®'#ÆàM¹%_ûánšF“Q‘Á®ÞÛÅ€ÁEq'‰\—ç9yq%Páðà;áy¹‰ùLx_,Xrh»qüÙ‰ÐO‰ †3JI²†Žc÷“4ˆ ‰‡oɲE³*[⦆sÓè¤Í~·Ö”?ø‘ŒK6"Á¦æF,¼JÇ1rê¼´…BžT5$_sôJäļ†Å$ý˦A:`ë5kέ'3_„}ªœRijÅ3ÎÜøsÛV:÷5ËΰãÚÓžõÌÚK¦œñÕ÷ÚßýT­vÙäÓ 

upladed to the tmp directory

问题是文件没有移动到当前目录,也没有移动到“上传”目录 - 当然它是单独的而不是评论 - !! 正如您所看到的那样,文件已成功上传到tmp目录并打开它,并从中读取一行。我也用is_uploaded_file函数检查了它,并通过了该检查。

我已经仔细阅读了许多网站上的php文件上传主题,发现php和html都没有遗漏! 文件夹权限是755。 我应该在这里提到文件上传最近才开始工作,我确信没有任何机构更改或修改了php.ini文件。

任何帮助请?我该怎么办?

仔细浏览服务器后发现我的网站被黑了,黑客上传了一个黑客文件! 但我真的不知道现在该做什么,而且我也不能估计那个黑客造成的伤害大小所以任何建议?!!!!

1 个答案:

答案 0 :(得分:0)

试试:

$pathDestino=$_SERVER['DOCUMENT_ROOT'] . "\\xxx\\upload\\" . $_FILES["htmlfile"]["tmp_name"];
$tmp_name=$_FILES["htmlfile"]["tmp_name"];
move_uploaded_file($tmp_name, $pathDestino);