Я знаю, что есть тысячи вопросов со схожей проблемой, однако большинство из них было решено либо с помощью chmod, либо они просто не указали полный путь для нового имени.Я пытаюсь изменить поведение очистки кеша на каком-либо веб-сайте, потому что после полной очистки веб-сайт зависает в течение длительного времени (для удаления каждого файла используется функция glob & recursive, а десятки тысяч сохраняются)из них, если не больше).Основная идея состоит в том, чтобы просто переименовать каталоги, используемые для хранения кэша, таким образом, это не займет даже секунды.Старые файлы могут быть удалены позже частично или как угодно.Хотя в теории это было просто, я боролся уже несколько часов, просто потому, что rename () выдает мне ошибку access denied (code 5)
.Я уже попробовал почти все, что мог, установив chmod для родительского каталога и каталога, который я хочу переименовать, исправив разделители каталогов, ничего не помогло.
Это мой код:
// $dir = C:\xampp\htdocs\test/cache/posts.cache
$dirToRename = substr($dir, strrpos($dir, '/')+1); // posts.cache
$parentDir = realpath($dir. '/..') . '/'; // C:\xampp\htdocs\test/cache/
error_log('dir '. $dir .' parentDir '. $parentDir .' dirToRename '. $dirToRename);
rename($parentDir . $dirToRename, $parentDir . 'old_'. uniqid() . '_' .$dirToRename);
Я пробовал это разными способами, различия в разделителях каталогов заключаются в том, что после \ test они добавляются сценарием PHP, это не должно иметь никакого значения в любом случае (и я попытался исправить их без каких-либо изменений)
Что я получаю в журнале:
dir C: \ xampp \ htdocs \ test / cache / posts.cache parentDir C: \ xampp \ htdocs \ test \ cache/ dirName posts.cache
Предупреждение PHP: переименовать (C: \ xampp \ htdocs \ test \ cache / posts.cache, C: \ xampp \ htdocs \ test \ cache / old_5bf72ae342d2f_posts.cache): доступ запрещен.(код: 5) в C: \ xampp \ htdocs \ test \ inc \ cache.php в строке 308
Очевидно, код выполняется в test / inc / cache.php, поэтому он пытаетсяизменить каталог за пределами CWD.Это просто XAMPP, есть ли способ исправить это?
РЕДАКТИРОВАТЬ: я думал, что это точка в имени каталога, но я могу переименовать каталог, который я создаю самостоятельно, но нете, что были сгенерированы PHP.