Не могу переименовать папку (PHP + Linux)

У меня следующая странная проблема:

Я создаю подпапку в папке Linux TMP с помощью PHP

mkdir(sys_get_temp_dir().DIRECTORY_SEPARATOR.'subfolder');

Затем я пытаюсь переместить эту папку с помощью PHP rename () func. Я пытаюсь сделать это так:

rename('/tmp/subfolder', '/other/folder/name');

Но это возвращает мне странное предупреждение:

Предупреждение: rename (): первый аргумент функции copy () не может быть каталогом

Это как-то связано с правами доступа к этим папкам? Есть идеи?

0

Решение

Твой /tmp на другой файловой системе от вашего /other? Это было бы хорошей практикой, если вы хотите отделить ваше временное хранилище файлов, которое может быть заполнено мусором, например. /var (который может заполниться журналами!)

Если это так, то в PHP есть основная ошибка, которая предотвращает rename() от надежной работы через файловые системы:

https://bugs.php.net/bug.php?id=54097

Обходной путь, указанный здесь, должен использовать exec("mv "...) но более надежно вы можете сделать:

if (@rename($from, $to)) {
return;
}
exec("mv " . escapeshellarg($from) . " " . escapeshellarg($to));

Если вы инкапсулируете это в функцию или метод, вы можете вызвать его вместо rename() всякий раз, когда вам это нужно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]