2014-10-30 36 views
-1

每當我將move_uploaded_file用於上傳的文件時,該文件總是以我的web根目錄結束。我究竟做錯了什麼?該路徑應該相對於我的web根目錄,還是應該是我的文件系統上的絕對路徑?php move_uploaded_file總是以webroot結尾

最終,我想要做的,它有一個文件夾爲PHP上傳/下載文件。我不想讓網絡機器人和其他人只是爲了能夠訪問這些文件,我只想要使用我的網站進行身份驗證的人能夠下載文件。所以,這就是我有我的文件結構佈局:

/var/www/website/public_html 

/var/www/website/files 

和我move_uploaded_file命令是這樣的:

move_uploaded_file($_FILES['txtFileSelector']['tmp_name'], "/var/www/website/files/".$_FILES['txtFileSelector']['name']); 

但無論怎樣我已經試過,文件總是在 /var/www/website/public_html 我甚至嘗試在public_html的其他子文件夾中發送文件,但仍然沒有運氣。

+1

使用move_uploaded_file($ _ FILES [ 'txtFileSelector'] [ 'tmp_name的值'],GETCWD()。DIRECTORY_SEPARATOR。「文件之間有很大的區別/'.$ _FILES [ 'txtFileSelector'] [ '名稱']); – 2014-10-30 06:23:54

回答

0

啊哈!目的地路徑是相對的!

所以我的解決辦法是:

echo move_uploaded_file($_FILES['txtFileSelector']['tmp_name'], "../files/".$_FILES['txtFileSelector']['name'] 

因爲相對路徑功能,使用... /從Web根上去,然後將其移動到所需的存儲文件夾。

更正

絕對路徑或相對路徑可以工作。這是文件夾權限的組合(www數據需要是擁有讀/寫權限的所有者或組成員),並且我是一個白癡並且發現了一個編程錯誤。我的代碼是在一個PHP類和上傳功能。在我的構造函數中,我的代碼中有一個錯誤。在做OO有

$upload_dir = "/path/to/upload"; 

$this->upload_dir = "/path/to/upload"; 
+0

如果使用相對路徑,路徑是相對的。由於在原始文章中你使用了絕對路徑(以'/'開頭),路徑應該是絕對路徑。這裏有點奇怪! – deceze 2014-10-31 05:21:16