排查思路:从简到繁,从服务器到代码
我们遵循一个逻辑顺序:先检查最常见、最容易解决的服务器环境问题,再逐步深入到网站配置和代码问题。

第一步:检查PHP错误日志(最关键的一步)
网站空白页,90%的情况下PHP都会抛出错误,为了安全或配置原因,这些错误信息没有在页面上显示,而是被记录到了服务器的日志文件里。
-
如何找到错误日志?
- 通过cPanel/Plesk等面板: 通常在 "错误日志" 或 "错误报告" 模块里可以找到。
- 通过SSH连接服务器: 日志文件通常位于以下位置之一:
/var/log/php_errors.log(最常见)/var/log/apache2/error.log(如果是Apache服务器)/var/log/nginx/error.log(如果是Nginx服务器)- 在网站根目录下的
logs文件夹里。
-
如何查看日志?
- 使用SSH命令:
tail -f /var/log/php_errors.log(实时查看) 或cat /var/log/php_errors.log(查看全部)。 - 通过FTP/SFTP工具,下载日志文件到本地用文本编辑器(如Notepad++, VS Code)打开。
- 使用SSH命令:
-
分析日志内容:
(图片来源网络,侵删)- 查找
Fatal error或Parse error: 这是最严重的错误,会直接导致脚本终止。Fatal error: Allowed memory size of ... bytes exhausted...(内存不足)Parse error: syntax error, unexpected ... in ... on line ...(语法错误,通常是某个文件被修改过或编码问题)Fatal error: Uncaught Error: Call to undefined function ...(调用了一个不存在的函数,通常是PHP版本过低或扩展缺失)
- 根据日志中的文件路径和行号,定位到具体有问题的代码。 这就是解决问题的金钥匙。
- 查找
第二步:检查并开启PHP错误显示
如果找不到日志文件,或者日志文件为空,可以临时开启PHP的错误显示,让错误信息直接显示在网页上,方便我们快速定位问题。
-
修改
php.ini文件:- 找到你的
php.ini文件的位置(可以通过phpinfo()函数在网站根目录创建一个文件info.php为<?php phpinfo(); ?>来查看)。 - 修改或添加以下配置:
display_errors = On display_startup_errors = On error_reporting = E_ALL
- 保存文件后,重启你的Web服务器(Apache/Nginx)。
- 找到你的
-
在网站入口文件中临时添加代码:
- 如果无法修改
php.ini(虚拟主机用户常见),可以直接在DedeCMS的入口文件index.php的开头添加以下代码:<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); // ... 后面是原有的代码 - 现在刷新你的网站空白页,应该就能看到具体的错误信息了。
- 如果无法修改
排查完成后,请记得将错误显示关闭,以免暴露网站信息! 将 display_errors 改回 Off。

第三步:检查常见问题原因(结合错误日志)
根据第一步日志中找到的错误类型,我们可以针对性地解决。
情况1:内存耗尽 (Fatal error: Allowed memory size...)
- 原因: 网站某个页面(通常是首页、列表页、包含大量内容的页面)在处理数据时需要的内存超出了PHP配置的上限。
- 解决方案:
- 增加PHP内存限制: 修改
php.ini文件,找到memory_limit这一项,将其值调大,memory_limit = 256M // 如果原来是128M,可以尝试256M或512M
然后重启Web服务器。
- 优化网站代码: 如果修改内存限制后问题依旧,说明代码效率低下,可能是因为DedeCMS版本老旧,或者安装了有问题的插件/模板,尝试回滚到旧版本或禁用插件。
- 增加PHP内存限制: 修改
情况2:PHP版本不兼容
- 原因: 你使用的DedeCMS版本(特别是比较老的版本如5.7)与服务器上的新版本PHP(如PHP 8.0+)不兼容,DedeCMS大量使用了旧版PHP的函数和语法,在新版PHP中已被废弃或语法改变。
- 解决方案:
- 最佳方案:升级DedeCMS。 如果可能,升级到较新的、兼容性更好的版本(如DedeCMS 5.7 SP2的最终版,或考虑更现代的CMS)。
- 临时方案:降级PHP版本。 联系你的虚拟主机服务商或服务器管理员,将PHP版本切换到
4或3,这两个版本对旧版DedeCMS的兼容性最好。
情况3:文件权限或所有者问题
- 原因: Web服务器进程(如
www-data,apache,nginx)没有权限读取网站的关键文件(如include目录下的文件,data目录,或配置文件common.inc.php)。 - 解决方案:
- 检查文件所有者: 确保网站目录和文件的所有者是正确的Web服务器用户,通常在Linux服务器上,应该是
www-data:www-data,可以通过chown -R www-data:www-data /path/to/your/website命令修正。 - 检查文件权限:
- 目录权限:
755或750 - 文件权限:
644或640 data、uploads等需要写入权限的目录:755或777(777有安全风险,请谨慎使用,只在必要时开启)。
- 目录权限:
- 可以使用
find命令批量设置权限:# 设置所有目录为755 find -type d -exec chmod 755 {} \; # 设置所有文件为644 find -type f -exec chmod 644 {} \;
- 检查文件所有者: 确保网站目录和文件的所有者是正确的Web服务器用户,通常在Linux服务器上,应该是
情况4:.htaccess 文件冲突
- 原因: 根目录或某个子目录下的
.htaccess文件中包含了错误的Rewrite规则,导致PHP无法被正确解析。 - 解决方案:
- 重命名
.htaccess: 将网站根目录下的.htaccess文件临时重命名为.htaccess.bak。 - 刷新网站: 如果网站恢复正常,说明就是
.htaccess的问题,检查其内容,特别是与PHP相关的配置,或者干脆删除它,让服务器使用默认配置,DedeCMS的伪静态规则是必须的,所以恢复后,你需要重新确认正确的.htaccess
- 重命名
情况5:模板文件或缓存问题
- 原因:
- 你修改了模板文件,但修改后的模板文件有语法错误(如PHP标签未闭合、缺少分号等)。
data目录下的缓存文件(如cache目录)损坏或过期,导致系统无法正确加载。
- 解决方案:
- 检查模板: 回到你最近修改过的模板文件,检查语法是否正确,可以使用PHP语法检查工具。
- 清理缓存: 通过FTP/SFTP删除
data/cache目录下的所有文件(.php文件),DedeCMS会在下次访问时自动重新生成缓存,这是解决很多奇怪问题的“万能”方法。
情况6:核心文件损坏或被植入后门
- 原因: 服务器被入侵,或者在上传/编辑文件时,核心文件(如
include/dedemodule.class.php,include/common.inc.php等)被恶意修改或删除。 - 解决方案:
- 对比文件: 从DedeCMS官网下载一个与你网站版本完全相同的安装包,用其中的核心文件覆盖你网站上的对应文件,注意:覆盖前务必备份!
- 安全扫描: 使用安全软件(如D盾、ClamAV等)对整个网站目录进行全盘扫描,查找可疑的Webshell或后门文件。
- 检查数据库: 检查
#@__admin表,看是否有未知的管理员
