PHP:重命名移动失败,但复制和取消链接的组合起作用

时间:2014-08-01 08:31:03

标签: php rename file-move

我正在尝试使用PHP的rename将文件移动到其他文件夹(并在同一步骤中重命名该文件)。但是,rename始终返回false。另一方面,使用copyunlink的组合可以正常工作。可能导致这种情况的原因是什么?

相关代码如下所示:

  if (!rename($targetpath, $backuppath)) {
    // if rename fails, try with copy and delete
    if (!copy($targetpath, $backuppath)) 
      die("9\nCould not move existing file to backup");
    touch($backuppath, filemtime($targetpath));
    if (!unlink($targetpath))
      die("9\nCould not move existing file to backup");
  }

路径就是例如。

$targetpath: /path/to/plots/some.pdf
$backuppath: /path/to/plots/old/some.pdfX14068815860

1 个答案:

答案 0 :(得分:0)

首先检查错误是:

print_r(error_get_last());

你使用的是什么版本的php?在旧版本中,rename仅在源和目标位于同一文件系统上时才有效。在某些系统上,如果您有该文件的打开文件描述符,rename也将失败。