2011-02-04 88 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

我有完全相同的问题。我所做的修复它是更改您上传到的文件夹的权限,以读取和写入所有文件。