2012-01-06 125 views
2

我有以下形式:PHP文件上传/ move_uploaded_file不工作

<html> 
<body> 

<form action="upload_file.php" method="post" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

</body> 
</html> 

而且下面的脚本:

<?php 
error_reporting(E_ALL); 

if (($_FILES["file"]["size"] < 20000)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 


    $moved = move_uploaded_file($_FILES["file"]["tmp_name"], "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"]); 

    if ($moved) { 
     echo "Move: Success"; 
    } 
    else { 
     echo "Move Failed"; 
    } 


     echo "Stored in: " . "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"]; 
     } 
    } 

else 
    { 
    echo "Invalid file"; 
    } 
?> 

出于某种原因,我不断收到 “移动失败”。任何想法为什么文件不移动?

======== SO认为我需要更多地解释这一点;所以我在这里输入一个句子。 ========

+0

请检查文件夹,请在您输入的同时输入完整的php错误信息。这会有很大帮助。无论如何;检查如果PHP安全模式关闭(有它并尝试移动上传的文件可能是最常犯的错误...) – giorgio 2012-01-06 15:12:08

+0

感谢您的回复乔治。我正在使用记事本++ - 我怎么去看看完整的PHP错误?我在IIS7上。 另外 - 我验证了安全模式关闭在php.ini。 – SB2055 2012-01-06 15:21:25

回答

6

检查您是否有权在该文件夹(C:/inetpub/wwwroot/PHP_Ramp/upload/)写入文件。您可以通过右键点击并选择properties -> Security

+0

我在代码的开头添加了以下内容: mkdir(“C:/ inetpub/wwwroot/PHP_Ramp/upload /”,0766); 我仍然在“移动失败”。 – SB2055 2012-01-06 15:21:43

+0

他的意思是确保文件夹本身可由PHP脚本写入。添加0766只是在写入后修改移动文件的权限。 – anjunatl 2012-01-06 15:24:55

+1

Windows中的'mode'参数会被忽略http://us.php.net/manual/en/function.mkdir.php - 我认为@Shyju意味着NTFS权限,因为@Mik表示他使用IIS7。 – Crontab 2012-01-06 15:29:16