PHP: move with rename fails, but combination of co

2019-05-31 05:18发布

I am trying to use PHP's rename to move a file to a different folder (and also rename the file in the same step). However, rename always returns false. On the other hand, using a combination of copy and unlink works just fine. What could be causing this?

The relevant code looks like this:

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

The paths would be e.g.

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

1条回答
Explosion°爆炸
2楼-- · 2019-05-31 05:56

Start by checking out whet the error was:

print_r(error_get_last());

What version of php are you using? On older versions, rename only works if both source and destination are on the same filesystem. On some systems, rename will also fail if you have an open file descriptor for that file.

查看更多
登录 后发表回答