核心排查思路:
DedeCMS生成内页的流程是:后台点击“生成” -> PHP程序执行 -> 写入HTML文件到指定目录,问题可能出在:

(图片来源网络,侵删)
- 权限问题:PHP没有权限写入目标目录。
- 文件问题:生成过程中需要的核心文件(如
index_make.php)丢失或损坏。 - 目录问题:目标目录不存在或路径错误。
- 程序问题:程序代码有误,或者数据库配置有误。
- 服务器/环境问题:PHP版本不兼容、安全软件拦截等。
详细解决方案(请按顺序排查)
第一步:检查目录和文件权限(80%的可能性)
这是最常见的原因,尤其是从虚拟主机迁移或新安装后。
-
检查网站根目录权限:
- 使用FTP工具(如FileZilla)连接到你的服务器。
- 选中你的网站根目录(通常是
www,public_html,htdocs或你绑定的域名文件夹)。 - 右键 -> 文件权限。
- 将数值设置为
755,这是Linux/Unix下Web目录的标准权限。
-
检查
data目录权限:data目录是DedeCMS的核心数据目录,存放缓存、配置文件等。- 选中
data目录,将其权限设置为755。 - 特别注意:进入
data目录,检查里面的cache、tplcache等子目录,确保它们的权限也是755,检查里面的缓存文件(如index_cache_*.php),权限应为644,如果这些文件权限不对,生成时会失败。
-
检查
templets目录权限:
(图片来源网络,侵删)templets目录存放模板文件,选中它,权限设置为755。- 检查你正在使用的模板目录(
templets/default/),确保其内部文件权限为644,目录权限为755。
-
检查HTML生成目录权限:
- 在后台“系统”->“系统基本参数”->“核心设置”中,查看“
cmspath”(你的CMS安装目录)和“artdir”(文章保存目录)。 - 默认情况下,HTML文件会生成到根目录的
html文件夹,请确保这个html文件夹存在,并且权限设置为755。 - 如果你的文章分目录保存(
/html/2025/05/),请确保这些动态创建的目录也有正确的权限,有时可以在后台手动生成一个栏目,系统会自动创建目录,然后你再去设置权限。
- 在后台“系统”->“系统基本参数”->“核心设置”中,查看“
操作命令(如果你有SSH权限):
# 设置网站根目录及子目录权限为755
chmod -R 755 /path/to/your/website/
# 设置data目录及其内部文件权限
chmod -R 755 /path/to/your/website/data/
find /path/to/your/website/data/ -type f -exec chmod 644 {} \; # 将data下的所有文件权限设为644
第二步:检查核心文件是否丢失或损坏
有时升级、迁移或误操作会导致关键文件缺失。
-
检查生成相关文件:
- 确保根目录下存在
index_make.php、makehtml_archives_action.php、makehtml_list_action.php等文件,这些是执行生成操作的核心PHP程序。 - 如果发现文件丢失,请从 官方原版程序包 中找到对应文件,用FTP上传覆盖。
- 确保根目录下存在
-
检查
include目录:include目录存放了DedeCMS的核心类库和函数,确保里面的所有文件都存在,特别是dedesql.class.php(数据库操作类)等。
-
检查
config目录:config目录下的inc_config.php是网站的核心配置文件,包含了数据库连接信息,确保这个文件存在且内容正确。
第三步:检查后台设置和数据库
-
检查“系统基本参数”:
- 进入后台 -> “系统” -> “系统基本参数”。
- 核心设置:
CMS安装目录:确保路径正确, 或/你的文件夹/。网站默认主页:确保是index.html。文件保存目录:确保是你设置的HTML目录,html/。是否使用目录默认页:通常建议开启。文档HTML命名规则:检查规则是否正确,{typedir}/{Y}/{M}/{D}/{aid}.html。
- 性能选项:
是否使用gzip压缩:如果开启后出现问题,可以先尝试关闭。模板缓存目录:确保路径正确且有写入权限。
-
检查栏目设置:
- 进入“频道模型” -> “栏目管理”,检查你无法生成内页的栏目。
- 列表选项:
列表命名规则:检查是否正确。生成选项:确保选择了“生成HTML”。
- 高级选项:
类型:选择“仅动态”或“默认”,如果选择“仅动态”,则不会生成列表页,但文章页应该可以生成,如果不是这个原因,请选择“默认”。自定义列表目录:如果设置了自定义目录,请确保该目录存在且有权限。
-
检查文章内容:
- 极少数情况下,文章内容中的特殊字符、错误的JS代码或过长的标题也可能导致生成失败。
- 尝试编辑一篇有问题的文章,删除所有内容,只留一个简单的标题和正文,然后尝试重新生成,如果成功,说明是内容问题,需要逐步排查是哪部分内容引起的。
第四步:使用DedeCMS自带的诊断工具
DedeCMS有一个很好的内置诊断功能,可以帮你快速定位大部分问题。
- 进入后台 -> “系统” -> “系统诊断”。
- 点击“开始”,系统会自动检查目录权限、关键文件、数据库配置等。
- 仔细查看诊断报告,所有标红或标黄的项都是问题所在,按照提示修复即可,这个工具非常有效,请务必优先使用。
第五步:检查服务器环境和冲突
-
PHP版本兼容性:
- 确保你的PHP版本与DedeCMS版本兼容,老版本的DedeCMS(如Dede5.7)对PHP7.x及以上版本支持不佳,可能会出现各种诡异问题,包括无法生成HTML。
- 解决方案:联系你的主机商,将PHP版本切换到
PHP 5.6或PHP 7.0,这是解决旧版DedeCMS问题的“万能钥匙”之一。
-
安全软件或防火墙拦截:
- 主机商可能安装了安全软件(如云锁、安全狗),这些软件会认为
index_make.php等生成文件具有高风险,从而拦截其执行。 - 解决方案:联系主机商,将DedeCMS的目录或这些特定文件加入白名单,或者,在安全软件后台设置,允许这些文件执行。
- 主机商可能安装了安全软件(如云锁、安全狗),这些软件会认为
-
URL重写(伪静态)冲突:
- 如果你的网站开启了伪静态(.htaccess 或 web.config),规则可能与生成过程冲突。
- 解决方案:临时将伪静态规则文件改名(如
.htaccess改为.htaccess.bak),然后尝试生成,如果成功,说明是伪静态规则问题,需要检查并修改规则。
总结与最后建议
如果你按照以上步骤逐一排查,99%的“无法生成内页”问题都能得到解决。
最后的杀手锏:
如果所有方法都试过了还是不行,可能是系统文件损坏过于严重,最彻底的解决方法是:
- 备份数据库:这是最重要的!在后台“系统”->“数据库备份/还原”中进行。
- 删除旧文件:通过FTP删除网站根目录下所有文件(保留
data和uploads等你自己的文件目录)。 - 重新上传程序:从DedeCMS官网下载与你版本完全一致的程序包,用FTP上传到根目录。
- 恢复数据库:在后台“系统”->“数据库备份/还原”中,恢复你之前备份的数据库。
通过这种方式,你等于重新安装了系统,但保留了所有数据和内容,通常能100%解决问题。
希望这份详细的指南能帮助你成功解决问题!
