我有一个表格,可以上传一张图片。
我尝试通过 $_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/
在哪里? ?我正在本地主机上进行测试。我的文档根目录是 /var/www/
.PHP 在 php.ini 中有默认设置(upload_tmp_dir 在 php.ini 中有注释)。
在我的
/tmp/
文件夹(在系统中) 我没有像 php***
这样的文件夹.在 /var/tmp/
任何一个。(Ubuntu 10.10,LAMP 由“tasksel”安装)
最佳答案
当您通过 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";
}
关于php - 在 php.ini 中找不到 tmp 文件夹。 (Ubuntu 10.10, apache2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903496/