2010-02-04 70 views
0

我真的無法弄清楚這一點,只是得到了一個基本的上傳腳本,但文件不會上傳。PHP move_uploaded_file還有一個不起作用

Form 
=> enctype is set 

print_r($_FILES['Product_Thumb']) 
=> [Product_Thumb] 
    => Array ( 
     [name] => prototype.js 
     [type] => application/x-javascript 
     [tmp_name] => /tmp/phpXzL6CT 
     [error] => 0 
     [size] => 139854)) 

我沒有在上傳文件夾中將特權(-R)設置爲777。 將所有者:組更改爲www-data:www-data。
Mkdir在我用於上傳文件的確切路徑上工作。 嘗試了不同的文件,嘗試了另一個文件夾,硬編碼了目標文件路徑,仍然無法正常工作。

我在/ var/tmp /中看到該文件,但移動不起作用,沒有任何錯誤。

我真的可以忽略一些東西嗎?

Thanx提前!

============================================== ========================= 調試輸出:

調試:tmp文件:/ TMP/phpgYOo9a

調試:目標目錄:/無功/網絡/ clubgevoel /公共/ IMG/producten/

調試:真正的目標:/無功/網絡/ clubgevoel /公共/ IMG/producten

調試:源可讀:

調試:目標is_dir:是

調試:目標可寫:是

調試:招:布爾(假)

+1

你需要向我們展示你正在使用的文件移動 – 2010-02-04 09:26:01

+0

move_uploaded_file($ _ FILES [ 'Product_Thumb'] [ 'tmp_name的值'],「在/ var/WWW的代碼/clubgevoel/public/img/producten/tralalala.jpg'); \ r \ n 也試過: move_uploaded_file($ _ FILES ['Product_Thumb'] ['tmp_name'],'/ var/www/clubgevoel/public/img/producten /'。$ _FILES ['Product_Thumb'] [ '名稱']); 也嘗試: move_uploaded_file($ _ FILES [ 'Product_Thumb'] [ 'tmp_name的值'],$ _SERVER [ 'DOCUMENT_ROOT'] 'clubgevoel /公共/ IMG/producten/2.JPG');這條道路上 的mkdir作品: $ _ SERVER [ 'DOCUMENT_ROOT']。 'clubgevoel/public/img/producten/makemeadir' – Johan 2010-02-04 09:55:30

回答

-1

調試:tmp文件:/ tmp目錄/ phpgYOo9a

調試:目標目錄:/無功/網絡/ clubgevoel /公/ IMG/producten/

調試:真正的目標:在/ var/WWW/clubgevoel /公共/ IMG/producten

調試:源可讀:

調試:目標is_dir:是

調試:目標可寫:是

調試:移動:布爾(假)

+0

似乎來源不可讀,這1的任何想法? – Johan 2010-02-04 11:44:51

+0

請編輯您的問題並添加附加信息(而不是將其張貼爲*答案*) – soulmerge 2010-02-04 11:45:04

0

完整的文件在服務器上的配額?

+0

你的意思是在tmp目錄或磁盤空間? 可用空間不夠,服務器是一個帶有apache2和php5的Ubuntu 9。 也從/ var/tmp刪除所有文件,看看是否有幫助,沒有它沒有:) – Johan 2010-02-04 10:15:02

+0

做簡單的copy()方法的工作? – 2010-02-04 16:29:57

0

move_uploaded_file如果失敗會發出警告(即返回false)。確保使用display_errors來測試上傳腳本在error_reporting to ALL上,如下所示:

ini_set('display_errors',1);

error_reporting(-1); //或error_reporting(E_ALL); (http://de2.php.net/manual/en/function.error-reporting.php

這些行應該放在腳本的其他任何位置之前。這樣你至少可以查看發生錯誤

+0

絕對不會給我帶來任何錯誤或警告:move_uploaded_file($ _ FILES ['Product_Thumb'] ['tmp_name'],'/var/www/clubgevoel/public/img/producten/tralalala.jpg'); – Johan 2010-02-04 10:57:51

0

我猜y的使用ablolute路徑destination.Try相對一個

+0

當我使用:S_SERVER ['DOCUMENT_ROOT']。 'public/img/producten /'。 $ _FILES ['Product_Thumb'] ['name']仍然無法上傳。 – Johan 2010-02-04 10:59:35

0

讓我們添加更多的調試輸出的原因....什麼

// "also tried: move_uploaded_file($_FILES['Product_Thumb']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/clubgevoel/public/img/producten/2.jpg');" 
error_reporting(E_ALL); ini_set('display_errors', 1); 
$targetDir = $_SERVER['DOCUMENT_ROOT'] . '/clubgevoel/public/img/producten/'; 
$realTargetDir = realpath($targetDir); 

ini_set('display_errors', 1); 
echo '<pre>Debug: tmp file:', htmlspecialchars($_FILES['Product_Thumb']['tmp_name']), "</pre>\n"; 
echo '<pre>Debug: target directory: ', htmlspecialchars($targetDir), "</pre>\n"; 
echo '<pre>Debug: real target: ', htmlspecialchars($realTargetDir), "</pre>\n"; 
echo '<pre>Debug: source readable: ', is_readable($_FILES['Product_Thumb']['tmp_name']), "</pre>\n"; 
echo '<pre>Debug: target is_dir: ', is_dir($targetDir) ? 'yes':'no', "</pre>\n"; 
echo '<pre>Debug: target writable: ', is_writeable($targetDir) ? 'yes':'no', "</pre>\n"; 

$b = move_uploaded_file($_FILES['Product_Thumb']['tmp_name'], $targetDir. '2.jpg'); 
echo '<pre>Debug: move: '; var_dump($b); echo "</pre>\n"; 

print?