我有一个上传图片的表单。
我尝试通过$_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”安装)
答案 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)
我遇到了完全相同的问题。我所做的是修改它是更改您上传到的文件夹的权限,以及为所有人进行读写。