Я пытаюсь использовать 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
также завершится неудачей, если у вас есть открытый файловый дескриптор для этого файла.