PHP 文件既不移动也不不移动


PHP file neither moved nor unmoved

我似乎无法弄清楚为什么会发生这种情况。当我运行以下代码时:

$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";
}

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

知道为什么吗?感谢您的任何建议。

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 - 第一次调用可以是真的,也可以是假的,所以你不需要重新检查。

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

如果是,则

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

另外,只检查运行一次。

第一次,将执行move_file_uploaded以检查它是否为负数。这显然是真的,所以它会转到第二个来检查它是否为真,并且它返回 false。

请改为执行以下操作:

$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";
}