今天偶然注意到WordPress的分类和标签消失了,开始以为是数据库表损坏,于是通过PHPMyAdmin修复表,但是注意到修复表的过程中有一个错误:Can't create/write to file '/tmp/...,错误代码为13,基本上是因为没有权限导致的,由于这个要修复的表和分类标签表关系不大,于是没多想,只有上网搜索分类目录丢失的具体原因。
错误提示:
Error: Can't create/write to file 'C:/WINDOWS/TEMP/#sql_738_0.MYD' (Errcode: 17)
Errno.: 1
网上遇到这个问题的大多数是因为临时文件夹满导致磁盘空间不足的原因,比如这里有篇帖子《My Categories and Tags all disappeared! Please HELP!》,多数人通过清除临时文件夹的文件释放磁盘空间来解决了这个问题,但是我主机上临时文件夹/tmp是空的,而且磁盘空间也绰绰有余,不存在这类问题。
我注意到刚才修复表的错误,会不会是因为MySQL没有读写/tmp文件夹的权限?通过ls -l命令发现只有root有写权限,网上有建议新建一个临时目录,然后再修改配置文件的。
觉得麻烦,索性直接chmod 777 /tmp开放全部权限了,设置完成后,PHPMyAdmin可以正常修复表了,分类和标签也回来了。
总结
1、C:/Windows/TEMP 文件夹权限不够,至少也要给出 USERS 组的可读可写权限;
2、C:/Windows/TEMP 文件夹的磁盘满了,文件写不进去了,清空 TEMP 文件夹;
3、第三方限制(如杀毒软件的限制)
1)你的服务器装了 MCAFEE 杀毒软件,它的访问保护禁止了 TEMP 文件可写,修改访问保护设置;
2)还是MCAFEE杀毒软件的问题,解决步骤:按访问扫描属性 - 所有进程 - 检测项 - 扫描文件(在写入磁盘时 )勾去掉就好了。