2012-06-21 32 views
1

所以我想通過HTML表單和一個簡單的php腳本進行基本上傳,但move_uploaded_file函數總是返回false。我已經在目錄上運行「chmod 777」(當我實際得到這個工作時,我會處理更多的安全問題),並且「upload」目錄位於htdocs文件夾(實際上是Ubuntu服務器和Linux Mint中的/ var/www)。move_uploaded_file在Linux中的Apache服務器上不工作Mint

這裏是形式:

<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> 

...和... upload_file.php

<?php 
    if ($_FILES["file"]["error"] == 0){ 
     if (file_exists("upload/" . $_FILES["file"]["name"])){ 
      echo $_FILES["file"]["name"] . " already exists. "; 
     }else{ 
      if(move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/upload/" . $_FILES["file"]["name"])){ 
       echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
      }else{ 
       echo "Failed to move uploaded file"; 
      } 
     } 
    }else{ 
     echo "Return Code: " . $_FILES["file"]["error"]; 
    } 
?> 

當我嘗試上傳一個小JPEG,我得到 「無法移動文件」任何想法?

+0

做**不**使用'['name']'參數來存儲文件,除非您採取了大量的安全防範措施。在遠程用戶的控制下,該名稱值是完全的,並且可以讓用戶在服務器上的任何文件上隨意塗鴉,因此可以盲目使用它。例如他們可以破解上傳並命名他們的文件'../../../../../ etc/passwd'。 –

+0

啓用完整的錯誤報告並將錯誤消息記錄到文件中。您應該看到詳細信息,以便減少所需的猜測量。 –

回答

2

您的腳本需要能夠寫入目標目錄,在這種情況下,它將是/ var/www/upload /(是您更改權限的目錄?)。你也使用客戶端的本地名稱,這可能是一個可能的問題和安全問題(不一定是這裏的原因)。

+1

哇...我更改了/ var/www /的權限,並認爲我已經這樣做了遞歸...不。專門爲/ var/www/upload更改了權限,現在它可以正常工作......謝謝! – J3RN

相關問題