排查步骤
第一步:检查文章内容本身(最常见的原因)
这是最容易被忽略但又最常见的原因,在编辑文章时,如果输入了某些特殊字符或使用了不兼容的编辑器功能,就可能导致前台解析错误,内容无法显示。

(图片来源网络,侵删)
-
检查特殊字符:
- 引号问题:请检查你的文章内容中是否使用了智能引号(如 “ ” ‘ ’),而不是半角直引号(如 " ' ),智能引号在某些字符集环境下会导致解析失败,将所有引号替换为半角直引号再试。
- 特殊符号:检查是否包含了不常见的特殊符号、表情符号(Emoji)等,尝试删除这些符号,看是否恢复正常。
- 复制粘贴:确认文章内容是否直接从 Word、PDF 或其他网页复制过来的,这些来源的格式非常复杂,常带有大量隐藏代码,建议先将内容粘贴到记事本等纯文本编辑器中,清除格式后再复制到 DedeCMS 编辑器。
-
切换编辑器:
- 登录后台,进入“系统” -> “系统基本参数” -> “核心设置”。
- 找到“默认编辑器”选项,尝试切换一个不同的编辑器(从
ckeditor切换到fck或dede),然后发布一篇文章测试。 - 有时候是特定编辑器与你的服务器环境(如 PHP 版本)不兼容导致的。
第二步:检查数据库内容
本身没问题,那问题可能出在数据库存储或读取环节。
-
直接查看数据库:
(图片来源网络,侵删)- 通过 phpMyAdmin 等数据库管理工具,登录你的数据库。
- 找到
dede_arcticle(或dede_archives) 表。 - 找到你发布的那篇文章,查看
body或content字段。这个字段的内容是否是你写的那段文字? body字段是空的或乱码:说明问题出在文章保存环节,可能是提交时出错。body字段内容正常:说明问题出在从数据库读取内容并显示到页面的环节,继续往下排查。
-
检查数据库编码:
- 确保你的数据库、数据表以及
body字段的字符集都是utf8或utf8mb4,如果存在编码不一致(如数据库是gbk,但网站是utf8),就会出现乱码或空白。 - 检查网站根目录下的
data目录下的config.cache.inc.php文件,确认数据库连接信息中的字符集设置是否正确。
- 确保你的数据库、数据表以及
第三步:检查模板文件和标签调用
正常,那问题可能出在模板如何调用和显示这些内容。
-
检查文章内容标签:
- 打开你用于显示文章详情的模板文件,这个文件通常位于
templets/default/article_article.htm或你自定义的模板目录下。 - 找到调用文章正文内容的标签,通常是
{dede:field.body/}或{dede:field.content/}。 - 确认标签名称是否正确,不要拼写错误。
- 尝试直接在模板中硬编码一段文字,例如在
{dede:field.body/}标签旁边加上<p>测试文字</p>,然后刷新页面,如果测试文字显示了,但文章内容没显示,100% 是{dede:field.body/}这个标签出了问题。
- 打开你用于显示文章详情的模板文件,这个文件通常位于
-
检查模板里的PHP代码:
(图片来源网络,侵删)- 有些模板会在正文内容前后加上一些自定义的 PHP 代码来处理内容,比如过滤广告、替换图片路径等,这些代码如果有 Bug,也可能导致内容被清空或无法显示。
- 检查模板文件中是否有对
{dede:field.body/}变量进行复杂操作的 PHP 代码段。
第四步:检查文件权限
DedeCMS 在处理文章时,可能会生成一些缓存文件或静态HTML文件,如果目录没有写入权限,可能导致处理失败。
- 请确保以下目录及其子目录具有可写权限(通常是 755 或 777,但 777 有安全风险,建议先尝试 755):
/data目录(非常重要,存放缓存和配置文件)/templets目录/uploads目录/a目录(如果开启了生成静态HTML)/html目录(如果开启了生成静态HTML)
第五步:检查服务器环境和PHP配置
这是最底层但也最难排查的问题。
-
PHP版本兼容性:
- DedeCMS 5.7 是一个比较老的程序,对 PHP 7.x 尤其是 PHP 8.x 的支持可能不太好,高版本的 PHP 可能会废弃一些旧函数,导致程序运行出错。
- 临时解决方案:尝试将你的 PHP 版本切换到
PHP 7.2或3,这是兼容性较好的版本,联系你的主机服务商进行切换。
-
PHP 扩展缺失:
- 检查 PHP 环境是否开启了必要的扩展,特别是
mysqli或pdo_mysql(用于连接数据库)、gd(用于处理图片)等,如果缺少,程序会报错或无法正常运行。
- 检查 PHP 环境是否开启了必要的扩展,特别是
-
查看服务器错误日志:
- 这是定位问题的“金钥匙”,文章发布后,如果服务器端有致命错误,它不会在前台显示,但会记录在错误日志里。
- 如何查看:
- 虚拟主机:通常在主机控制面板的“错误日志”、“日志查看”等模块里。
- VPS/服务器:日志文件通常在
/var/log/nginx/error.log(Nginx) 或/var/log/apache2/error.log(Apache)。
- 重点查看:在发布文章的时间点附近,日志里是否有
PHP Fatal Error、Parse error等错误信息,根据错误信息,可以精确定位到是哪个文件、哪一行代码出了问题。
第六步:检查核心程序文件是否被修改或损坏
如果以上所有步骤都无效,可能是程序文件本身出了问题。
- 对比官方文件:
- 去 DedeCMS 官网下载一个与你的版本(5.7)完全相同的官方程序包。
- 将官方包里的
include目录、dede目录下的核心文件(特别是arc.archives.class.php,这个文件负责处理文章内容)与你网站上的文件进行对比。 - 如果发现你的文件被修改过,或者与官方文件大小、内容差异很大,就用官方文件覆盖你的文件(注意:覆盖前备份你修改过的文件,
config.cache.inc.php)。
总结与排查思路
| 问题现象 | 最可能的原因 | 排查顺序 |
|---|---|---|
| 发布后,数据库里是空的 | 提交时出错,或编辑器/特殊字符导致提交失败。 | 检查特殊字符/切换编辑器 2. 查看浏览器控制台是否有JS错误 |
| 数据库里有内容,前台显示空白 | 模板标签错误 ({dede:field.body/}) 2. PHP代码报错 3. PHP版本不兼容 |
检查模板标签 2. 查看服务器错误日志 3. 检查PHP版本 |
| 所有文章都空白 | 程序核心文件损坏,或服务器环境严重不兼容 | 检查 arc.archives.class.php 文件 2. 对比官方文件 3. 检查PHP版本和扩展 |
建议的排查流程: 检查文章内容 -> 查看数据库 -> 检查模板标签 -> 查看服务器错误日志 -> 检查PHP版本
按照这个流程,绝大多数的“发布文章空白”问题都可以被找到并解决,如果实在找不到原因,可以提供服务器错误日志里的关键错误信息,这样能更精准地定位问题。
