排错查错解决问题原则一:从简单着手

当我们碰到故障和错误时,请谨记:先从简单着手。
最近接连碰到两个需要解决的简单故障,却被我想复杂了,浪费了不少时间。
故障一:Drupal6.x 的一个affiliates模块(推广点击)从Centos+Apache下迁移到Win2008R2+IIS7.5环境下之后出现了匿名用户点击推广链接出现403拒绝访问的权限错误,原因很简单:我没有在系统后台赋予匿名用户点击推广链接的权限。
找到这个故障却花了3-4天功夫:
首先怀疑的是权限,win系统下和linux下Drupal系统所需权限简单来说是要给files目录以读取写入权限,实施起来却不是这么简单的事情,涉及到权限,一切都会复杂起来,于是反复的折腾目录权限,直到无计可施!
那就再换个思路:简洁链接问题?Apache的url重写和iis7.5的重写技术有很多区别,而affiliates模块是需要启用url重写才能正常运作,于是又和重写规则较劲,废了老大功夫,到Drupal官网上查英文的讨论,希望从那里能得到启发,最终没结果!
回头仔细去看affiliates模块的说明文档,提示到要启用Apache的重写模块?!难道不支持IIS?!因为奇怪的故障加上时间上经不起消耗,是没可能再迁回Centos+Apache的。静下心来仔细想想,难道我把问题弄复杂了?仔细回想,对比这个403错误,难道,还有什么affiliates模块的权限没设置好?跑后台看看,果然匿名用户也有个“点击推广”的权限,勾选,保存,匿名用户点击测试-OK,不再有403权限错误提示,正确的打开了跳转的目标网页!真是让人热泪盈眶!
故障二:帮朋友恢复一个ecshop的网站,出现数据库无法链接故障,原因简单:我把数据库密码复制为数据库名了。
当时出现问题时也是把问题想深奥了,花了一个晚上解决。
先怀疑ftp上传类型,因为php一般要求脚本类文件要用二进制模式,检查了之后模式正确;
"localhost:3306"这种带端口写法被服务器拒绝?默认情况下,目标服务器拒绝3306端口的外部远程链接,改成"localhost"、"local"、"127.0.0.1"都不行,参照了同服务器另外一个mysql网站,用localhost链接是正常的,那么这个原因排除;
输入屏幕错误提示谷歌,在ecshop官方网站上也有一堆的人说数据库好端端的就出现无法链接,难道是ecshop的缓存引起?又是翻箱倒柜的查目录删缓存,还是不行;
有人说是不是目录权限,又去折腾权限,自然是没结果,又处于无计可施的状态。
那就从头再来过,我又翻出数据库链接脚本,一行行看代码,反正也没几行,终于发现:怎么数据库名、数据库用户名、数据库密码都一样?!改正,上传覆盖,刷新页面-千呼万唤始出来!