2012-03-06 87 views
1

我想上傳我的PHP項目到公共服務器。 我在創建產品或編輯產品時創建了圖像上傳文件。 它在localhost中工作,但是當我移動到公共服務器時,它不起作用。 我認爲move_uploaded_file部分不起作用。 如何更改鏈接?還是我必須改變什麼? 當我看到Filzilla時,我可以看到它是'/ www/eshopProject/inventory_images'的遠程站點。 索引文件是'/ www/eshopProject/storeAdmin'。 我必須改變這樣的鏈接嗎? 我不知道如何更改鏈接。 你能幫我嗎?上傳圖像到公共服務器不工作.. 是否有任何安全問題?或者其他的東西? 請幫幫我。謝謝。PHP的move_uploaded_file不工作到公共服務器

--index.php--

$pid = mysql_insert_id(); 
//Place image in the folder 
$newname = "$pid.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/product_$newname"); 
+0

什麼是文件夾的權限? – 2012-03-06 16:32:56

+0

...必須是類似於777或更少的東西,具體取決於用戶 – tonymarschall 2012-03-06 16:33:59

+0

幾乎可以確定完整路徑不是「/ www/eshopProject/inventory_images」,但是您使用的是相對路徑,如果您正在運行腳本以相同的方式..啓用錯誤報告,看看有什麼問題..它可能是由許多原因造成的:寫入權限,文件大小的服務器限制,在服務器上禁用的上傳和其他 – mishu 2012-03-06 16:45:08

回答

4

首先檢查在來的評論中提到的目錄的權限。 如果您有shell訪問權限,「chmod 777 target_dir」或「chmod 707 target_dir」應該足夠了。

第二次嘗試使用if和file_exists函數來調試它(http://php.net/manual/en/function.file-exists.php)。

就是這樣。

$uploadedFile = $_FILES['fileField']['tmp_name']; 
$destination = "../inventory_images/product_$newname"; 

if(file_exists($uploadedFile)) 
{ 
    echo "file uploaded to temp dir"; 
} 
else 
{ 
    echo "file upload failed"; 
    exit(); 
} 

if(move_uploaded_file($uploadedFile, $destination)) 
{ 
    echo "upload complete"; 
} 
else 
{ 
    echo "move_uploaded_file failed"; 
    exit(); 
} 

您也可以通過使用FILEDIR常數(http://php.net/manual/en/language.constants.predefined.php)檢查您的當前工​​作目錄。

試試這個。

echo __FILE__; 
echo dirname(__FILE__); 
echo __DIR__; 
+0

哦。我將權限更改爲777這個文件夾,它的工作原理。謝謝! – wholee1 2012-03-06 20:59:36

1

請確保您有設置爲您嘗試過載的文件夾的寫文件的權限。