文件上传不在/ tmp中

时间:2011-04-01 16:11:26

标签: php

这听起来像个愚蠢的问题但是,在上传文件后,文件不在php所说的位置。

首先是简单的测试页面:

<html><body> 
<h1><?=$_FILES['imgup']['tmp_name'];?></h1>
<?
        print_r($_FILES);
?>
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="imgup" id="imgup">
<input type="submit">
</form>
</body></html>

现在,print_r以纯文本形式出现:

Array ( [imgup] => Array ( [name] => ace.jpg [type] => image/jpeg [tmp_name] => /tmp/phpEdfBjs [error] => 0 [size] => 29737 ) )

所以没有错误,标准外观路径,但/ tmp没有这样的文件。此外,在我的整个系统上运行查找会出现bubkis。

仅供参考:php.ini有

max_execution_time = 120
file_uploads = On
upload_max_filesize = 2M

我上传的文件是29k

有什么想法吗?

1 个答案:

答案 0 :(得分:21)

当收到临时文件的PHP脚本运行完毕后,临时文件将被删除:它只是一个临时文件。

您要将表单发布到的PHP脚本 - upload.php - 应该使用move_uploaded_file()将临时文件移动到非临时位置


基本上,这个想法是:

  • 用户将文件上传到您的脚本,
    • 该文件存储在临时的lcoation中。
  • 您的脚本适用于该文件:
    • 检查文件是否正常(内容类型,尺寸,......)
  • 如果文件正常,您的脚本会将其移动到永久存储目录(无论您想要什么)

如果上传未成功完成,或者您未将文件移动到其他位置,则会自动删除临时文件。


作为参考,您应该阅读手册的以下部分:Handling file uploads - POST method uploads

引用与您的问题相关的部分:

  

该文件将从中删除   临时目录在末尾   要求,如果它没有被移走   或重命名。