2012-05-14 406 views
2

奇怪的是,這個腳本在本地(在MAMP上)工作,但不在我的遠程服務器(Bluehost)上工作。我嘗試添加一些POST數據,並且工作正常,但是文件上傳根本不起作用。有任何想法嗎?PHP上傳腳本在本地工作,但不在遠程服務器上

//upload file 
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 2000000) && isSet($_FILES["file"])){ 
if ($_FILES["file"]["error"] > 0){ 
    echo "<div class='error'>Return Code: " . $_FILES["file"]["error"] . "</div>"; 
}else{ 
    if (file_exists("../upload/" . $_FILES["file"]["name"])){ 
     echo "<div class='error'>" . $_FILES["file"]["name"] . " already exists. </div>"; 
    }else{ 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../upload/" . $_FILES["file"]["name"]); 
    } 
} 
}else{ 
if((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg"))){ 
    //echo "<div class='error'>Invalid file</div>"; 
}else{ 
    if(isSet($_FILES["file"]["type"]) && !isSet($message)){ 
     echo "<div class='error'>Invalid file type.</div>"; 
    } 
} 
} 

這裏是上傳表單。

<form action="index.php" method="post" enctype="multipart/form-data"> 
      <div> 
       <input type="file" name="file" id="file" /> 
       <input type="submit" id="submit" value="Submit" /> 
      </div> 
     </form> 

上傳文件夾的權限設置爲「775」。

我會很感激任何幫助/想法。

更新

問題解決了。這是一個php.ini問題。我不確定問題的確切位置。但是,當我恢復了默認的php.ini文件時,它工作。

+0

但是,該文件夾的所有權是什麼?這與權限模式同樣重要。 –

+1

服務器日誌中是否有任何內容?你可以添加一些調試輸出到代碼,看看發生了什麼? 「它不起作用」並不是特別有用的信息...... – David

+0

「完全」是什麼意思?任何錯誤消息?服務器響應代碼? $ _FILES數組轉儲也可以幫助理解問題。 – Eugene

回答

0

我認爲問題在於服務器上載文件夾的讀寫執行權限。確保目標文件夾具有讀寫執行(777)權限。

相關問題