Доступ к каталогу PHP rename () запрещен в windows (xampp), несмотря на правильный путь chmod & file - PullRequest
0 голосов
/ 23 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...