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
,但没有看到这样的文件:phpFs1iE7
,phpGAgJFX
,我使用了ssh并启用了show hidden files
。所以我只是想知道为什么我在服务器上看不到这些文件的临时副本?
答案 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)
可能是一个值得关注的好地方。