-1

我对 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 文件。

请问有什么帮助吗??我应该怎么办?

仔细浏览服务器后发现我的网站被黑了,黑客上传了一个hack文件! 但我真的不知道现在该怎么办,而且我也无法估计那个黑客造成的损害大小,所以有什么建议吗?!!!!!!

4

1 回答 1

0

试试看:

$pathDestino=$_SERVER['DOCUMENT_ROOT'] . "\\xxx\\upload\\" . $_FILES["htmlfile"]["tmp_name"];
$tmp_name=$_FILES["htmlfile"]["tmp_name"];
move_uploaded_file($tmp_name, $pathDestino);
于 2013-01-01T19:58:18.230 回答