2012-01-06 99 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