thinkcmf5管理员后台无法清除缓存的解决办法,thinkcmf5管理员后台不能清除缓存,thinkcmf5管理员后台不能清除模板缓存。
查来查去,追到文件 \vendor\thinkcmf\cmf\src\common.php 中的 cmf_clear_cache() 这个函数
原来是这里在作怪,如下图:
打开注释就可以。
修改后:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * 清空系统缓存 */ function cmf_clear_cache() { // 清除 opcache缓存 if (function_exists("opcache_reset")) { opcache_reset(); } $dirs = []; $rootDirs = cmf_scan_dir(Env::get('runtime_path') . "*"); //$noNeedClear=array(".","..","Data"); $noNeedClear = ['.', '..', 'log']; $rootDirs = array_diff($rootDirs, $noNeedClear); foreach ($rootDirs as $dir) { if ($dir != "." && $dir != "..") { $dir = Env::get('runtime_path') . $dir; if (is_dir($dir)) { //array_push ( $dirs, $dir ); $tmpRootDirs = cmf_scan_dir($dir . "/*"); foreach ($tmpRootDirs as $tDir) { if ($tDir != "." && $tDir != "..") { $tDir = $dir . '/' . $tDir; if (is_dir($tDir)) { array_push($dirs, $tDir); } else { @unlink($tDir); } } } } else { @unlink($dir); } } } $dirTool = new Dir(""); foreach ($dirs as $dir) { $dirTool->delDir($dir); } } |
因为版本不同,所以不是同一种错误都是同一种解决办法。
如果你的问题,在按着我的方法查证后,发现不对,那一定是其它原因造成的,那就查别的地方。