2012-01-08 146 views
-1

我想在遠程主機上上傳圖片(本地一切正常)。爲什麼我不能在PHP中使用chmod()上傳文件?

我用下面的代碼就像我的其他以前的項目做到這一點:

if (move_uploaded_file($_FILES["scan"]["tmp_name"], 'images/scans/1.jpg')) { 
    chmod ('images/scans/1.jpg','0644'); 
} 

但每次我運行在互聯網這個代碼的時候,我得到一個錯誤:

Warning: move_uploaded_file(images/profile/Mordent.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in ...

我必須將scans目錄權限更改爲然後我才能上傳圖像。否則我不能。這對我來說很奇怪。我在很多時候都在不同的項目中使用過這些代碼,並且我沒有任何問題。

+0

也許這個問題可以幫助你 http://stackoverflow.com/questions/8776348/php-script-not-processing – fkerber 2012-01-08 12:31:07

+0

運行'chmod()'取整數,提供一個表達式爲八進制數的整數容易產生意想不到的結果。爲了清楚起見,您應該傳遞一個十進制整數(如果需要/需要,可以使用字符串)或刪除圍繞八進制數的引號。我知道這裏沒有問題,因爲在到達'chmod()'之前發生的錯誤仍然值得注意。 – DaveRandom 2012-01-08 12:46:53

+0

我做了你的建議並刪除了引號。謝謝。但正如你所說,問題仍然存在 – 2012-01-08 16:48:26

回答

2

images/scans/必須由Web服務器用戶寫入,而不應該是0777,這是世界可寫的。首先,images必須可供網絡服務器用戶讀取,其5位於最後位置(如0755)。 scans目錄必須由Web服務器用戶擁有或可由其寫入。它最好由Web服務器用戶擁有,其權限也可以是0755

+0

我做了你說的,但我仍然有這個問題 – 2012-01-08 16:37:16

0

根據php.net

Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.

+2

我相信當OP說「遠程主機」他的意思是「生產服務器」,而不是他自己的電腦。 – JJJ 2012-01-08 12:35:47

相關問題