在php中找不到tmp文件夹。 (Ubuntu 10.10,apache2)

时间:2011-02-04 22:15:09

标签: php ubuntu file-upload apache2

我有一个上传图片的表单。 我尝试通过$_FILES

来获取它
$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”安装)

2 个答案:

答案 0 :(得分: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 :(得分:1)

我遇到了完全相同的问题。我所做的是修改它是更改您上传到的文件夹的权限,以及为所有人进行读写。