前两天机房电源出现故障造成了服务器非法关机,等到通电之后访问Discuz论坛的时候出现错误,错误信息如下:
Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .
于是开始查看对应目录的权限,发现已经赋予了写入的权限。根据搜索到的资料,说需要将forumdata/cache目录下面所有的文件删除,让Discuz!重新生成新的缓存,但是删除forumdata/cache目录下面的所有文件之后出现了400错误。
这个时候无法进入论坛的管理后台去清空缓存,后来想到Discuz!官方提供了一个修复的工具,于是到Discuz!官方网站上下载了原始安装包,然后将tools.php上传到Discuz!论坛的根目录下面,但是运行的时候竟然提示:
./forumdata/cache清除失败.
./forumdata/templates清除失败.
很奇怪,目录本身是存在的,并且目录也有写入的权限。
正在一筹莫展的时候,突然看到有一个帖子里面提到Discuz!的缓存与eAccelerator冲突,将eAccelerator禁用掉就可以了,不过将eAccelerator禁用掉之后问题依旧,甚至将eAccelerator对应的临时目录下面的文件都删除了还是无效。因为默认情况下eAccelerator是放在/tmp目录下的,在查看/tmp目录的时候,发现了很多形如tcmalloc.4187的文件,猛然想到Nginx中使用了tcmalloc,而在nginx.conf文件中指定的tcmalloc目录为/tmp/tcmalloc目录,但是不知为何/tmp目录下面并没有tcmalloc目录,于是创建目录并设置777属性,重启Nginx无效,于是将系统重启之后,网站就可以正常访问了。
参考资料:
Can not write to cache files, please check directory 解决办法
升级完7.0后访问首页白屏,官方提供的方法无效
无法更新缓存 如何处理!