2010-08-11 71 views
1

相同的腳本在localhost中正常工作,但它不在服務器中工作。它拋出一些錯誤 -無法上傳圖片在PHP中,權限被拒絕?

Warning: copy(album/6349416.jpg) [function.copy]: failed to open stream: Permission denied in D:\Hosting\6448289\html\upload.php on line 112 

對應的112線是 -

$image_name=$unq.'.'.$extension; 
//the new name will be containing the full path where will be stored (album folder) 
$newname="album/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); //112th line 
+0

沒有任何理由,爲什麼你正在使用的不是副本move_uploaded_file? – teemitzitrone 2010-08-11 08:03:32

回答

1

$ NEWNAME應該是一個新的文件完整路徑。但是在你的腳本中它是一個相對路徑,似乎指向裏面的某處/ tmp

+0

我認爲$ newname會指向執行腳本的當前文件夾.. – 2010-08-11 06:19:51

+0

表示它應該像'':http:// domain.com/album /' – nectar 2010-08-11 06:20:48

+0

不,它應該像/ home/mysite/WWW /上傳/專輯。您可以使用dirname(__ FILE__)來獲取當前PHP腳本的目錄名稱。 – 2010-08-11 06:31:49

0

檢查相冊文件夾的權限。它應該以6或7結束(讀取+寫入必須爲每個人的權限啓用)

+0

我已檢查所有權限。 – nectar 2010-08-11 06:21:44

+0

該文件是否已經存在?對目錄擁有寫權限是不夠的。如果覆蓋現有文件,則必須具有該文件的寫入權限。 – 2010-08-11 13:14:10

0

這可能是一個愚蠢的問題,但你使用的是Windows服務器?

您在"album/".$image_name中使用了正斜槓(unix樣式),但錯誤位置顯示爲反斜槓(窗口樣式)「D:\ Hosting \ 6448289 \ html \ upload.php」。它是否仍然以反斜槓失敗,即"album\".$image_name

編輯:我忘了補充 - 你可能需要一個./.\在該位置的前申報其相對於PHP腳本的當前位置

+0

PHP將自動轉換/分隔符到\在Windows系統上。 ''album \「。$ image_name'無論如何都會導致語法錯誤,因爲\將轉義雙引號並導致未終結的字符串。 ''專輯\\「。$ image_name'可以工作,但。 – 2010-08-11 13:12:35