PHP文件既不移动也不移动

时间:2012-08-16 20:07:39

标签: php file upload move

我似乎无法弄清楚为什么会这样。当我运行以下代码时:

$uref = APACHE_ROOT .  UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}"; 

if ( !move_uploaded_file( $_FILES['file']['tmp_name'], $uref ) ) {
   echo "Move failed";
} elseif ( move_uploaded_file( $_FILES['ref']['tmp_name'], $uref) )     {
    echo "Move succeeded";
}

两个语句都没有返回。这两条路都存在;一个文件已成功上传,仅在第二次上载尝试后才开始发生。

任何想法为什么? 感谢您的任何建议。

2 个答案:

答案 0 :(得分:4)

if ( !move_uploaded_file( $_FILES['file']['tmp_name'], $uref ) ) {
   echo "Move failed";
} elseif ( move_uploaded_file( $_FILES['ref']['tmp_name'], $uref) )     {
    echo "Move succeeded";
}

如果您的第一个调用返回true,因为文件被移动,那么第二个将返回false,因为该文件不再存在。

你只需要一个简单的if / else就好了 - 第一次调用可以是真或假,所以你不需要重新检查。

答案 1 :(得分:1)

首先,$uref = APACHE_ROOT . UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}";是一个目录吗?

如果是,那么您正在尝试写入目录,如果该目录已经存在,该目录可能会失败。

另外,只检查一次运行。

第一次执行move_file_uploaded以检查它是否为负数。这显然是正确的,所以它是第二个来检查它是否真实,并且它返回错误。

请改为:

$uref = APACHE_ROOT .  UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}"; 

if(move_uploaded_file( $_FILES['file']['tmp_name'], $uref )){
   echo "Move succeeded";
} else {
   echo "Move failed";
}