Я пытаюсь использовать rename PHP для перемещения файла в другую папку (а также переименовать файл на том же шаге). Однако rename всегда возвращает false . С другой стороны, использование комбинации copy и unlink работает просто отлично. Что может быть причиной этого?
Соответствующий код выглядит следующим образом:
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
Начните с проверки того, что ошибка была:
print_r(error_get_last());
Какую версию php вы используете? В старых версиях rename работает только в том случае, если оба источника и адресата находятся в одной и той же файловой системе. В некоторых системах rename также завершится неудачей, если у вас есть открытый файловый дескриптор для этого файла.