2012-09-02 86 views
2

我在使用PHP move_uploaded_file命令時遇到實際問題,無法在共享Apasche虛擬主機服務器上正常工作。PHP的move_uploaded_file建議

如果我想創建一個文件夾(mkdir),我必須使用完整的路徑名稱,例如

$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID; 
mkdir($target_path, 0755); 

這樣做,獨特的文件夾被創建和使用FileZilla我可以上傳文件到它。

但是,當我嘗試使用move_uploaded_file命令的完整路徑時,無法上傳任何內容。例如。

move_uploaded_file($tmp_file, $target_path); 

其中,例如:

$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif" 
$target_path = "/home/myhostingname/public_html/uploads/files/130/" 

任何想法,我做錯了。該腳本被接受,但似乎會出現不匹配......

+1

如果您使用完全訪問文件夾:'0777'嗎? – Krycke

+0

它應該工作,如果你是從PHP腳本創建文件夾。那麼它將由您的www-unix-user(最初啓動Web服務器的用戶)擁有。通過ftp創建一個文件夾,然後寫入文件夾,需要在3日/ 4日有更高的5格 - 因爲所有者可能是不同的。 – mschr

回答

2

$tmp_file的文件應通過HTTP POST請求上傳,否則move_uploaded_file將無法​​正常工作。

要檢查的文件已被上傳使用is_uploaded_file

所以,你的代碼可能是這樣的:

$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif" 
$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID; 
if(is_uploaded_file($tmp_file)){ 
    mkdir($target_path, 0755); 
    move_uploaded_file($tmp_file, $target_path); 
} 
+0

我認爲你已經在tmp文件似乎並沒有出現在這個問題上,儘管它每次給我一個路徑和獨特的(?)。我在絕對和本地的道路上嘗試過它,但沒有快樂。接下來我該做什麼? –

+0

@EdwardHasted你怎麼把這個文件放在那裏?它是否通過HTTP POST上傳?它是否存在,如果是這樣 - 是否有足夠的權限? –

0

的解決方案似乎是在$ target_path實際上是一個文件。文件沒有特別說明。然而,當你開始查找代碼時,desitination是一個路徑和文件名......當我做出這個改變時,它立即起作用。