核心排查思路
当生成的静态页面打开是空白时,根本原因可以归结为两大类:

(图片来源网络,侵删)
- PHP 执行错误:在生成页面的过程中,PHP 代码执行时遇到了致命错误,导致脚本提前终止,没有生成任何 HTML 内容。
- HTML 内容为空:PHP 代码执行成功了,但是因为某些原因(如数据库查询失败、模板标签错误等),最终输出的 HTML 内容本身就是空的。
我们的排查重点就是围绕这两点展开。
第一步:检查最常见的原因(90%的问题出在这里)
检查 PHP 错误日志
这是最重要、最有效的一步,生成静态页面时,PHP 出错,错误信息会记录在服务器的错误日志中。
-
如何查看错误日志?
- 方法一(推荐):通过你的网站管理面板(如 cPanel、宝塔面板)找到“错误日志”或“PHP 错误日志”功能,直接查看。
- 方法二:在
php.ini配置文件中找到error_log路径,然后用 FTP 或 SSH 工具下载查看,常见路径如/var/log/php_errors.log或/home/用户名/logs/error.log。 - 方法三(临时方案):在
include/common.inc.php文件的开头加入以下代码,让错误直接在页面上显示出来:ini_set('display_errors', 'On'); error_reporting(E_ALL);然后重新生成页面,看看页面上是否显示了具体的错误信息。排查完后务必删除这两行代码,否则会暴露网站安全信息。
-
常见错误类型及解决方案:
- Fatal error: Allowed memory size... (内存耗尽)
- 原因:生成页面时,需要处理的数据量过大(比如文章内容、图片、评论等),超过了 PHP 设置的内存限制。
- 解决:联系你的空间商,将
php.ini中的memory_limit值调大,例如从128M调整到256M或512M。
- Fatal error: Maximum execution time... (执行时间超时)
- 原因:生成页面耗时过长,超过了 PHP 设置的最大执行时间。
- 解决:联系空间商,将
php.ini中的max_execution_time值调大,例如从30秒调整到300秒(5分钟)。
- Fatal error: Call to undefined function... (函数未定义)
- 原因:你的代码中调用了一个不存在的函数,通常是某个插件或自定义模块的函数。
- 解决:根据错误信息,找到对应的文件,注释掉或删除有问题的函数调用。
- Fatal error: Allowed memory size... (内存耗尽)
检查模板文件和标签
这是第二常见的原因。
-
检查模板文件是否损坏
- 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开你生成空白的那个页面所对应的模板文件(
/templets/default/article_article.htm)。 - 检查文件内容是否完整,特别是
{dede:field.body/}这样的核心内容标签是否存在,有时候文件上传不完整或编辑错误会导致标签丢失。 - 检查模板文件中是否有不兼容的 PHP 代码或语法错误。
- 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开你生成空白的那个页面所对应的模板文件(
-
检查自定义字段或模型
- 如果使用了自定义模型,检查
{dede:field.自定义字段名/}这样的标签是否在模板中存在,并且字段名是否正确。 - 进入后台的“内容模型管理”,检查你所用模型的字段是否都正常。
- 如果使用了自定义模型,检查
-
检查嵌套标签
- 检查模板中是否有
{dede:arclist}或{dede:loop}等循环标签,循环内部又调用了另一个可能导致错误的标签(如{dede:field name='array'}),这种复杂的嵌套有时会引发问题,尝试简化模板,逐步排查。
- 检查模板中是否有
第二步:检查数据库和核心文件
如果第一步没有发现问题,那么问题可能出在数据层面。
检查数据库连接
- 方法:打开
/data/common.inc.php文件,检查数据库连接信息是否正确:$cfg_dbhost = 'localhost'; // 数据库主机 $cfg_dbname = 'your_database_name'; // 数据库名 $cfg_dbuser = 'your_username'; // 数据库用户名 $cfg_dbpwd = 'your_password'; // 数据库密码 $cfg_dbprefix = 'dede_'; // 数据库前缀
确保这些信息准确无误。
检查核心文件是否完整
- 原因:可能在上传文件时遗漏了某些核心文件,或者文件被错误修改。
- 解决:
- 备份你的网站(特别是
/data目录和/templets目录)。 - 下载一个与你当前 DedeCMS 版本完全相同的官方安装包。
- 用官方安装包里的文件(注意:不要覆盖
/data目录)去覆盖你网站上的文件,这可以修复损坏的核心文件。
- 备份你的网站(特别是
检查栏目和文章
- 检查栏目:进入后台“栏目管理”,检查生成空白的栏目是否设置了正确的“栏目列表模板”和“文章列表模板”,如果模板文件为空或路径错误,列表页自然会空白。
- 检查文章:进入后台“所有档案”,尝试编辑那篇生成空白的文章。
- 在编辑器中,点击“HTML”源码模式,查看文章内容是否为空。
- 尝试保存文章(不修改任何内容),看看是否能正常保存,如果保存时出错,说明文章数据本身可能有问题。
第三步:检查环境和权限
如果以上都正常,那么问题可能出在服务器环境上。
检查目录权限
- 原因:织梦生成静态文件时,需要向指定目录写入文件,如果目录没有写入权限,生成会失败,页面自然空白。
- 解决:确保以下目录具有正确的写入权限(通常是 755 或 777,777有安全风险,不推荐长期使用):
- (网站根目录)
/html(静态文件存放目录)/data(缓存目录)/uploads(上传目录)/templets(模板目录)/special(专题目录)
检查 PHP 版本和函数
- 原因:你使用的 DedeCMS 版本可能与你服务器的 PHP 版本不兼容,旧版本的 DedeCMS 在 PHP 7.0+ 上可能会因为
mysql_*系列函数被移除而报错。 - 解决:
- 查看你当前使用的 DedeCMS 版本,并确认其官方支持的 PHP 版本。
- 如果版本不兼容,尝试升级 DedeCMS 到最新稳定版,或者联系空间商调整 PHP 版本。
第四步:高级排查和临时解决方案
如果所有方法都试过了还是不行,可以尝试以下方法来缩小问题范围。
切换模板
- 将默认模板(如
/templets/default)复制一份,重命名为test,然后在后台将你的栏目或首页模板切换到test模板,再生成一次。 - 如果切换默认模板后正常,说明问题出在你原来的模板文件里,仔细对比两个模板的差异。
关闭所有插件
- 登录后台,暂时禁用所有非核心的插件,有时候某个不兼容的插件会在生成页面时触发致命错误。
临时切换为动态浏览
- 在后台“系统” -> “系统基本参数” -> “核心设置”中,将“网站首页默认页面的扩展名”从
.html改为.php。 - 这样网站就会以动态方式运行,如果动态浏览正常,说明问题确实出在静态化生成环节,可以结合前面的错误日志进行针对性修复。
排查流程清单
- 【最重要】 查看服务器 PHP 错误日志,找到致命错误。
- 检查生成页面对应的 模板文件 是否完整、标签是否正确。
- 检查 数据库连接信息 (
/data/common.inc.php)。 - 用官方安装包 覆盖核心文件(保留
/data目录)。 - 检查 栏目和文章 本身的数据是否为空或异常。
- 检查 网站目录权限 是否正确。
- 切换模板 或 关闭插件 来隔离问题。
- 临时切换为动态浏览,验证问题范围。
按照这个流程,从最常见的原因开始排查,绝大多数“生成静态打开空白”的问题都能得到解决,祝你顺利!
