2011-02-04 55 views
1

我有一個表單,它可以上傳圖片。 我嘗試$_FILES得到它:在php中找不到tmp文件夾。 (Ubuntu 10.10,apache2)

$filename = $_FILES['screenshot']['name']; 
$source = $_FILES['screenshot']['tmp_name']."/".$filename; 
$target = GL_UPLOADPATH.$filename; 

echo "TEST0";   

if (move_uploaded_file($source, $target)) { 
    //connect to DB and so on, what I need 

    echo "TEST1"; 
} 

,所以我得到呼應TEST0但沒有得到迴應TEST1。 如果我回顯每個變量 - 這是正常的。我看到我的$target - 這有點像/tmp/phpoLqYdj/test2.jpg

所以,我覺得PHP不能move_uploaded_file,因爲它無法找到/tmp/phpoLqYdj/test2.jpg

但哪一個/tmp/phpoLqYdj/?我正在測試localhost。我的文檔根目錄是/var/www/。 PHP在php.ini中有默認設置(upload_tmp_dir在php.ini中註釋)。

在我的/tmp/文件夾(在系統中)我沒有像php***這樣的文件夾。在/var/tmp/之一。

(Ubuntu的10.10,LAMP是由「中的tasksel」安裝)

+0

是否打開了錯誤報告? – 2011-02-04 22:22:17

+0

是的,默認情況下已關閉。我打開它: error_reporting = E_ALL&〜E_NOTICE – 2011-02-04 22:28:46

回答

1

當通過PHP你上傳的文件,它存儲他們的,這不是一個名爲相關的文件名的任何一個tmp文件。將$filename追加到$_FILES['screenshot']['tmp_name']是處理它的不正確方法... $_FILES['screenshot']['tmp_name']是該文件。

此外,tmp文件在請求結束時被刪除,因此您永遠不會有機會在文件管理器中實際看到它。您可以在相同的請求中移動它,也可以不用。這一切都是以安全的名義完成的。

無論如何,只要使用這個,而你會很好。

$filename = $_FILES['screenshot']['name']; 
$source = $_FILES['screenshot']['tmp_name']; 
$target = GL_UPLOADPATH.$filename; 

echo "TEST0";   

if (move_uploaded_file($source, $target)) { 
    //connect to DB and so on, what I need 

    echo "TEST1"; 
} 
1

我有完全相同的問題。我所做的修復它是更改您上傳到的文件夾的權限,以讀取和寫入所有文件。