php:试图在服务器上找到上传文件的临时副本

时间:2013-08-08 08:16:39

标签: php

if ($_FILES['doc']['error'][$i] == UPLOAD_ERR_OK) {
                        $tmp = explode('.', $_FILES['doc']['name'][$i]);

                        $filename = md5($GLOBALS['TSFE']->fe_user->user['uid'].'.'.$tmp[0].'.'.time()).'.'.$tmp[sizeof($tmp) - 1];
                        var_dump($_FILES['doc']['tmp_name'][$i]);
                        if (move_uploaded_file($_FILES['doc']['tmp_name'][$i], PATH_site.$this->uploadDir.$filename)) {

在上面的脚本中,我使用var_dump($_FILES['doc']['tmp_name'][$i]);输出文件的临时副本,在前端显示:

string(14) "/tmp/phpFs1iE7" string(14) "/tmp/phpGAgJFX" 

然后我去了/home/thejob/tmp,但没有看到这样的文件:phpFs1iE7phpGAgJFX,我使用了ssh并启用了show hidden files。所以我只是想知道为什么我在服务器上看不到这些文件的临时副本?

2 个答案:

答案 0 :(得分:2)

这些文件是临时。它们是如此临时,PHP在请求结束时删除它们。它们只是在PHP脚本运行时才存在,并且因为它可能在一秒钟内完成,所以你很难在短时间内看到这些文件。

如上所述,它们也位于/tmp,而不是/home/thejob/tmp

答案 1 :(得分:0)

在Linux系统上,以斜杠开头的文件名表示相对于根目录的路径,因此/tmp/phpFs1iE7将位于该位置,而不是/home/thejob/tmp/phpFs1iE7。此外,脚本完成时可能会删除临时文件,因此可能需要进行sleep()调用,以便在查看文件时暂停脚本(如果您确实需要这样做)。如果您试图找出脚本无效的原因,那么var_dump(PATH_site.$this->uploadDir.$filename)可能是一个值得关注的好地方。