我知道有成千上万个具有类似问题的问题,但是大多数问题都可以通过使用chmod来解决,或者只是没有提供新名称的完整路径。
我正在尝试更改某些网站的缓存清除行为,因为完成完全清除后,该网站会挂起很长时间(它使用全局和递归功能删除每个文件,并且有成千上万个(如果不是更多)。
主要思想是仅重命名用于存储高速缓存的目录,这样就无需花费一秒钟的时间。旧文件可以稍后删除,也可以删除。
从理论上讲,这很简单,但我已经苦苦挣扎了几个小时,仅仅是因为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): 拒绝访问。在线上的C:\ xampp \ htdocs \ test \ inc \ cache.php中的(代码:5) 308
很显然,该代码在test / inc / cache.php中执行,因此它试图修改CWD之外的目录。 这只是XAMPP的东西,有什么办法可以解决?
编辑:我认为它与目录名称中的点有关,但实际上我可以重命名一个由我自己创建的目录,而不是由PHP生成的目录。