第一步:检查基础配置(90%的问题出在这里)
这是最常见的原因,通常是由于缓存或配置文件错误导致的。

(图片来源网络,侵删)
清除浏览器缓存和Cookie
很多时候,浏览器缓存了旧的页面或错误信息,导致新代码不生效。
- 操作:按
Ctrl + F5(或Cmd + Shift + R在 Mac 上) 强制刷新登录页面。 - 操作:清除浏览器关于你网站的 Cookie,然后重新打开登录页面。
检查 data 目录权限
DedeCMS 的验证码图片是生成在 data 目录下的,如果这个目录没有写入权限,验证码就无法生成和显示。
- 操作:
- 通过 FTP 或你的主机控制面板,找到网站根目录下的
data文件夹。 - 将其权限设置为 755 (Linux/Unix 系统),如果还不行,可以尝试设置为 777,但为了安全,问题解决后记得改回 755。
- 确保
data目录下的safe目录也有正确的写入权限。
- 通过 FTP 或你的主机控制面板,找到网站根目录下的
检查 common.inc.php 文件
这个文件是 DedeCMS 的核心配置文件,验证码的开关和路径都在这里定义。
- 操作:
- 用 FTP 或主机文件管理器,打开
/include/common.inc.php文件。 - 找到下面这行代码:
//验证码的开关 $safe_gdopen = '1';
- 确保它的值是
'1'(开启状态),如果被改成了'0',请改回'1'。 - 保存文件并上传,覆盖原文件。
- 用 FTP 或主机文件管理器,打开
检查验证码图片路径是否正确
验证码代码本身是正确的,但指向图片的路径错了。

(图片来源网络,侵删)
- 操作:
- 打开登录模板文件:
/templets/login.htm。 - 找到验证码图片的
<img>标签,它看起来通常是这样的:<img src='{dede:global.cfg_cmspath/}/plus/vdimgck.php?' /> - 关键点:检查
src属性中的{dede:global.cfg_cmspath/}这个变量,它指向你的网站根目录,如果这个变量在后台被错误设置,图片路径就会错。 - 手动修复:如果不确定,可以直接将路径写死,改成绝对路径,如果你的网站域名是
www.example.com,就把上面那行改成:<img src='http://www.example.com/plus/vdimgck.php?' />
- 保存模板文件,然后刷新登录页面看看。
- 打开登录模板文件:
第二步:检查服务器环境和代码问题
如果第一步的方案都无效,那可能是服务器环境或代码本身的问题。
检查 PHP 环境是否支持 GD 库
验证码图片是使用 PHP 的 GD 库动态生成的,如果你的服务器 PHP 环境没有安装或开启 GD 库,验证码就无法生成。
- 操作:
- 在你的网站根目录下创建一个名为
info.php的文件。 - 在文件中输入以下代码:
<?php phpinfo(); ?>
- 访问
http://你的域名/info.php。 - 在页面中按
Ctrl + F搜索 "GD"。 - 如果找到了 "GD Support" 并且其值为 "enabled",说明 GD 库已开启,如果值为 "disabled" 或找不到,说明 GD 库未开启,需要联系你的主机商开启它。
- 在你的网站根目录下创建一个名为
检查验证码生成文件 vdimgck.php
这个文件是生成验证码的核心脚本,它可能被损坏或存在错误。
- 操作:
- 下载一个与你 DedeCMS 版本完全相同的、未修改过的
vdimgck.php文件。 - 用 FTP 将其上传到
/plus/目录下,覆盖掉原来的文件。 - 注意:有些黑客会修改这个文件来留后门,所以务必从官方或可信的渠道下载源码包。
- 下载一个与你 DedeCMS 版本完全相同的、未修改过的
检查是否有程序冲突或被篡改
- 操作:
- 检查
/include/dedelogin.php文件,这是处理登录逻辑的文件,可以搜索一下里面是否有可疑的、与验证码相关的代码被人为添加或修改过。 - 如果你安装了某些插件或模板,它们可能会修改登录相关的文件,尝试暂时禁用所有插件,看看问题是否解决。
- 检查
第三步:终极解决方案(重置验证码)
如果以上所有方法都失败了,可以尝试这个“大刀阔斧”但通常有效的方法。

(图片来源网络,侵删)
手动调用验证码代码
模板文件中的调用代码可能过于复杂或与当前版本不兼容,我们可以用最简单、最原始的方式来调用它。
- 操作:
- 打开登录模板文件
/templets/login.htm。 - 找到验证码相关的
<img>- 将其完全替换为下面这段代码:
<img id="vdimgck" src="/plus/vdimgck.php" alt="看不清?点击换一张" style="cursor:pointer" onclick="this.src='/plus/vdimgck.php?'+Math.random();" />
- 这段代码直接使用绝对路径调用
/plus/vdimgck.php,并加入了点击刷新的功能,非常稳定。- 保存文件,刷新登录页面。
- 将其完全替换为下面这段代码:
- 打开登录模板文件
总结与排查清单
为了方便你操作,这里有一个快速排查清单:
| 问题原因 | 检查/操作方法 |
|---|---|
| 浏览器缓存 | 按 Ctrl + F5 强制刷新页面。 |
data 目录权限 |
将 /data 目录权限设置为 755。 |
| 核心配置文件 | 检查 /include/common.inc.php 中 $safe_gdopen = '1'; 是否为开启。 |
| 模板路径错误 | 检查 /templets/login.htm 中验证码图片的 src 路径是否正确,可尝试写死为绝对路径。 |
| PHP GD 库未开启 | 创建 info.php 文件检查 GD Support 是否为 enabled。 |
vdimgck.php 文件损坏 |
下载一个干净的 vdimgck.php 文件覆盖 /plus/ 目录下的原文件。 |
| 代码冲突/被篡改 | 检查登录相关文件是否被插件或人为修改。 |
| 终极方案 | 在模板中直接使用 <img src="/plus/vdimgck.php"> 调用验证码。 |
通常情况下,90% 的问题都可以通过第一步的“基础配置”解决,请耐心按照顺序排查,一定能找到问题所在,如果尝试了所有方法仍然无效,可能是服务器环境有特殊限制,建议直接联系你的主机商寻求技术支持。
