Dragon
主机之家测评主机之家测评  2019-08-30 21:50 主机之家测评 隐藏边栏 |   抢沙发  4 
文章评分 0 次,平均分 0.0

最近把单位网站的服务器从 linux 虚拟主机搬迁到了 windows2003+IIS+PHP 的云服务器上,因为已经对网站用的 DEDECMS 做了很多的二次开发,因此没选用官方的织梦网站搬家方式,而是直接备份导出了数据库,去服务器上恢复了数据库,然后将网站源文件都传到服务器上,通过修改 DEDECMS 数据库配置文件的方法完成了网站搬家,不知道怎么修改 DEDECMS 数据库配置文件的童鞋们可以参看这篇文章:DEDECMS 数据库配置文件在哪?怎么修改 DEDECMS 数据库配置信息?

结果刚一打开后台就发现验证码显示错误,如图:

DEDE 后台验证码不显示 DEDECMS 网站搬家后台验证码显示错误

网上百度了一下,一般认为是服务器文件权限问题或者是服务器环境问题,再就是/data/common.inc.php 的编码有 bom 头问题,把这个文件改为无 utf-8 无 bom 头格式,问题还是没有解决。而网上大部分的解决办法就是通过修改/data/safe/inc_safe_config.php 中的配置,然后去掉后台登陆验证码的限制,这样虽然可以解决问题,但有两个缺点:第一是使网站变得不安全,毕竟后台少了验证码,最简单的穷举就有很大的可能性暴力破解;第二就是凡事不求甚解,不去了解并解决根本上的原因,那么虽然这个问题解决了,但是还有可能导致其他问题啊,比如我在绕开验证码登陆后台后,就发现 DEDECMS 后台多图上传提示 FILEID:X 错误,X 为数字。

因此下决心要解决问题,首先查看验证码文件路径,得到验证码生成文件路径/include/vdimgck.php,在浏览器上直接输入网址+这个路径打开这个文件同样提示错误,接下来检查服务器环境及文件夹权限,发现服务器已经开启 GD 库并且权限配置正常,如图:

DEDE 后台验证码不显示 DEDECMS 网站搬家后台验证码显示错误

这下真不知道问题出现在哪了,服务器正常,程序在以前的 linux 虚机上也正常运行,怎么会出现问题呢?想想还是不死心,还是怀疑服务器配置有问题,于是去官网下了个最新版的 DEDECMS V5.7GBK 安装包,开了个测试网站,结果验证码显示正常。

这就说明服务器环境及权限配置一定是正确的,那么一定是我在网站二次开发中改动了哪个文件导致出现该问题,然后首先用官网安装包中的/include/vdimgck.php 文件替换了我网站中的文件,问题仍然存在。仔细看了下/include/vdimgck.php 文件的代码,发现在开头中引用了另外三个文件,分别是:

  	require_once (dirname(__FILE__).'/common.inc.php');  	require_once (DEDEDATA.'/safe/inc_safe_config.php');  	require_once (DEDEDATA.'/config.cache.inc.php');

依次替这三个文件(注意第一个文件是数据库配置文件,替换后要将里面的配置改成正确的,可参考:DEDECMS 数据库配置文件在哪?怎么修改 DEDECMS 数据库配置信息?),当替换完第二个文件后,发现问题解决,仔细对比了两个文件,如下图:

DEDE 后台验证码不显示 DEDECMS 网站搬家后台验证码显示错误

DEDE 后台验证码不显示 DEDECMS 网站搬家后台验证码显示错误

其中第一张图是我网站中的文件,第二张图是官方的文件,能看出区别吗?区别就是我网站的文件莫名其妙的就多出了很多空格行,就是这些空格行中的某一行不仅包含换行符,还包含了一个空格,就是这个空格导致了 DEDE 网站后台验证码不显示。

所以如果你的网站在搬家过程中出现了网站后台验证码不显示的问题,如果参照网上的答案没有解决,那么你可以尝试检查下这 4 个文件:/include/vdimgck.php、/data/common.inc.php、/data/safe/inc_safe_config.php、/data/config.cache.inc.php,然后用官网对应的文件替换一下试试。

就这样经过一个晚上的详细检查,成功发现了问题的根本原因,既解决了 DEDE 后台验证码不显示 DEDECMS 网站搬家后台验证码显示错误的问题,又解决了 DEDECMS 后台多图上传提示 FILEID:X 错误的问题,同时又学到了知识,积累了经验。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享