2012-06-24 113 views
0

我一直在掙扎了幾天,試圖找出我怎麼就不能臨時移動文件(move_uploaded_file)到我已經安裝(/img/uploads/photos)的目錄。PHP:無法看到上傳目錄

經過大量的測試和頭部劃傷之後,我決定寫入CakePHP的CakeLog,無論上傳函數中發生了什麼。

儘管我已經物理創建:/img/uploads/photos,當我使用CakeLog::write('debug', 'Does directory exist?: '.json_encode(file_exists('/img/uploads/photos/')));時,它記錄了false。或is_dir,還返回false

爲什麼會發生這種情況......任何人都可以幫助我!

+0

目錄的權限需要使得目錄可以由運行Web服務器的用戶寫入。 – Alex

+0

將文件從一個目錄移動到另一個目錄時,也使用絕對路徑。使用'dirname(__ FILE __)'來獲取當前的工作目錄,然後添加剩下的路徑。 –

回答

2

我懷疑你已經建立了一個目錄/img/uploads/photos/?它可能與您的其他文件在相同的目錄中,如/var/www/yoursite/img/uploads/photos/或類似的東西。

你可以使用一些小把戲,比如​​3210,因爲你可以在http://php.net/manual/en/function.file-exists.php

+0

是的...我忘了那件事。我不得不使用'$ _SERVER ['DOCUMENT_ROOT']' –

1

當你說你創建了/img/uploads/photos/目錄時,我不相信你。這是絕對路徑,從機器的根開始計算。您更有可能在某處(如/var/www/img/uploads/photos//home/caboone/public_html/img/uploads/photos/)在網絡目錄中創建了該文件夾。

+0

你也是對的。 –

0

路徑/img/...看到過指的路徑是相對於磁盤根目錄,也就是說,它是指在您的硬盤的最頂層img目錄磁盤。我懷疑這是目錄所在。不要使用/來啓動路徑,以使其與您正在使用的文件相關。文件路徑不是URL!

+1

沒有「磁盤根目錄」這樣的東西。它是機器的根目錄(甚至更具體:操作系統的)。磁盤可以安裝在目錄結構中的任何位置*。我知道你正在試圖用一種友好的新手來解釋它,但是對於POSIX系統來說這是非常不準確的。 –

+0

文件系統根然後如果你nitpicky。 :) – deceze

0
  1. 將文件從一個目錄移動到另一個目錄時使用絕對路徑。 使用dirname(__FILE__)得到絕對當前工作目錄,然後加入 剩下的路徑。
  2. 按照@Alex的建議,對目錄設置適當的權限。使用chmod()和 將權限設置爲777(ugo + w)[用戶+組+其他世界可寫]。