- 整个网站无法访问,显示 500、404 或其他错误。
- 后台登录页面能打开,但登录后点击任何功能都报错或无响应。
- 前台页面能打开,但动态内容(如文章列表、搜索)不显示。
- 运行特定功能时(如生成HTML、更新缓存)出现 PHP 错误。
为了帮你解决问题,我们需要像侦探一样,一步步排查,下面我将按照从易到难、从常见到不常见的顺序,为你提供一套详细的排查和解决方案。

第一步:基础环境检查(最重要)
PHP 代码的运行依赖于服务器环境,如果环境本身有问题,代码肯定跑不起来。
检查 PHP 是否安装并运行
这是最根本的问题,你的服务器上是否安装了 PHP?PHP 服务是否正在运行?
- 如何检查?
- 在你的网站根目录(通常是
/dedecms/或/www/)下创建一个名为info.php的文件。 - 在文件中输入以下代码:
<?php phpinfo(); ?>
- 保存文件,然后在浏览器中访问
http://你的域名/info.php。 - 如果能看到详细的 PHP 配置信息页面,说明 PHP 环境正常。
- 如果看到下载文件、或者显示 404、500 等错误,说明 PHP 环境未正确配置或未运行,你需要联系你的服务器管理员或虚拟主机服务商,确认 PHP 已正确安装和启用。
- 在你的网站根目录(通常是
检查 PHP 版本兼容性
DedeCMS(织梦CMS)有多个版本,每个版本对 PHP 的要求不同,PHP 版本过高或过低,会导致不兼容。
- 常见版本对应关系:
- DedeCMS 5.7 系列最高支持 PHP 7.4,不支持 PHP 8.0+。
- DedeCMS 5.8 及后续版本开始支持 PHP 7.x 和 PHP 8.x。
- 如何检查?
- 访问
info.php页面,查看 "PHP Version" 信息。 - 如果你的 DedeCMS 是老版本(如 5.7),而 PHP 版本是 8.0 或更高,这几乎肯定是导致问题的原因,你需要降级 PHP 版本到 7.2 ~ 7.4 之间。
- 访问
检查目录权限
DedeCMS 需要对某些目录进行写入操作,

-
/data/(核心配置和数据目录) -
/uploads/(附件上传目录) -
/templets/(模板缓存目录) -
/html/(生成的静态HTML目录)
(图片来源网络,侵删) -
/include/(包含文件目录) -
如何检查和修复?
-
Linux 服务器: 通过 SSH 连接到服务器,执行以下命令(请将
/path/to/your/dede替换为你的网站实际路径):# 将指定目录及其下所有文件和子目录的所有者设置为 web 服务器用户(通常是 www 或 nginx) chown -R www:www /path/to/your/dede # 将指定目录及其下所有文件和子目录的权限设置为 755,目录设置为 755,文件设置为 644 find /path/to/your/dede -type d -exec chmod 755 {} \; find /path/to/your/dede -type f -exec chmod 644 {} \; # 特别给 data 目录添加可写权限 chmod -R 777 /path/to/your/dede/data/ -
Windows 服务器: 右键点击这些文件夹 -> "属性" -> "安全" -> "编辑",确保 IIS 或 Apache 用户的账户有“修改”或“完全控制”权限。
-
第二步:DedeCMS 自身配置检查
如果环境没问题,那么问题可能出在 DedeCMS 的配置上。
检查 data 目录下的配置文件
data 目录是 DedeCMS 的核心,存放着数据库连接信息等关键配置。
- 检查
common.inc.php文件:- 确认文件存在。
- 打开文件,检查数据库连接信息(
$cfg_dbhost,$cfg_dbname,$cfg_dbuser,$cfg_dbpwd)是否正确。 - 检查
$cfg_cookie_encode这串加密密钥是否和你在后台设置的保持一致,如果修改过,请确保这里同步更新。
检查 config.cache.inc.php 文件
这个文件是后台“系统基本参数”的缓存,如果它损坏或权限不对,会导致很多功能异常。
- 尝试删除或重命名:
- 登录 FTP 或服务器,将
/data/config.cache.inc.php文件重命名(config.cache.inc.php.bak)。 - 然后重新登录 DedeCMS 后台,系统会自动重新生成这个配置文件,这能解决因配置缓存错误导致的问题。
- 登录 FTP 或服务器,将
检查 .htaccess 文件(如果使用 Apache 服务器)
.htaccess 文件定义了网站的 URL 重写规则,对 DedeCMS 的伪静态至关重要。
- 确保文件中的
RewriteEngine On是开启的。 - 检查路径是否正确,
RewriteBase /或RewriteBase /你的网站目录/。 - 如果文件内容混乱或与你的服务器环境不匹配,可能会导致 PHP 无法被正确解析,可以尝试暂时将其重命名,看看网站是否能恢复访问(注意:这会导致伪静态失效,URL 变回
index.php?...的形式)。
- 确保文件中的
第三步:具体问题具体分析
根据你遇到的具体错误,进行针对性排查。
情况1:访问任何页面都显示 500 Internal Server Error
- 原因: 通常是 PHP 代码有语法错误,或者目录权限问题。
- 排查:
- 检查
php.ini中display_errors是否设置为On,如果设置为Off,错误会被隐藏,只显示 500,可以临时改为On来查看具体错误信息。 - 检查最近是否修改过任何 PHP 文件,检查是否有语法错误(如缺少分号、括号不匹配等)。
- 严格按照第一步的“检查目录权限”操作,特别是
data目录。
- 检查
情况2:后台登录后点击功能报错,提示“Fatal error”或“Call to undefined function”
- 原因: PHP 扩展(模块)缺失,或者核心文件损坏。
- 排查:
- 检查 PHP 扩展: 访问
info.php页面,搜索以下关键模块,确保它们已启用:mysqli或pdo_mysql(数据库连接必需)gd(图片处理必需)curl(远程采集或调用API时需要)mbstring(处理中文字符必需)- 如果某个模块未启用,需要在
php.ini中去掉其前面的分号 然后重启 PHP-FPM/Apache 服务。
- 检查核心文件: 是否有人误删了
/include/目录下的关键文件(如dedesql.class.php)?或者文件内容被修改?可以从官网下载对应版本的 DedeCMS,只替换/include/和/dede/目录下的文件(注意:操作前务必备份!)。
- 检查 PHP 扩展: 访问
情况3:前台无法显示动态内容,但静态页面可以
- 原因: 通常是服务器没有开启 URL Rewrite 功能,或者
.htaccess规则不正确。 - 排查:
- 检查后台设置: 登录后台,进入“系统” -> “系统基本参数” -> “核心设置”,检查“是否使用伪静态”选项是否已开启。
- 检查服务器配置:
- Apache: 确保
mod_rewrite模块已启用,.htaccess文件规则正确。 - Nginx: DedeCMS 默认不包含 Nginx 的伪静态规则,你需要手动在 Nginx 的配置文件中添加以下规则,并重载 Nginx 配置。
location / { if (!-e $request_filename) { rewrite "^/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)\.html$" /index.php?m=$1&c=$2&a=$3 last; rewrite "^/([a-z0-9]+)/([a-z0-9]+)\.html$" /index.php?m=$1&c=$2 last; rewrite "^/([a-z0-9]+)/.html$" /index.php?m=$1 last; } }
- Apache: 确保
第四步:终极解决方案
如果以上所有方法都试过了还是不行,可以考虑以下方案:
-
重新上传覆盖:
- 从 DedeCMS 官网下载一个与你当前版本完全相同的安装包。
- 只覆盖核心程序文件,即
/dede/、/include/、/plus/等目录。千万不要覆盖/data/和/templets/目录,否则你的数据和自定义模板会全部丢失! - 上传后,再次检查目录权限。
-
排查插件冲突:
如果问题是在安装某个新插件后出现的,尝试禁用或删除该插件,看看问题是否解决。
-
查看服务器错误日志:
- 这是排查问题的“黑匣子”,联系你的主机商,获取服务器的错误日志(如 Apache 的
error_log或 Nginx 的error.log),里面会记录 PHP 执行时的具体错误信息,能帮你准确定位问题。
- 这是排查问题的“黑匣子”,联系你的主机商,获取服务器的错误日志(如 Apache 的
总结排查清单
遇到 "dede php不运行" 时,请按以下顺序检查:
- 环境基础:
info.php能访问吗?PHP 版本对吗? - 目录权限:
data目录有 777 权限吗?其他目录有 755 吗? - 核心配置:
common.inc.php数据库信息对吗?config.cache.inc.php是否损坏? - 服务器规则:
.htaccess或 Nginx 伪静态规则对吗? - PHP模块:
mysqli,gd,mbstring等关键模块开启了吗? - 文件完整性: 核心文件(如
dedesql.class.php)是否丢失或被破坏? - 错误日志: 查看服务器日志,看具体是什么错误。
按照这个流程,90% 以上的问题都能被找到并解决,祝你顺利!
