船说 CMS 前台空白页面怎么修复
学完这篇,你能自己定位船说 CMS 前台白屏的真正原因并动手修好,不用急着重装或换程序。
船说 CMS 基于 ThinkPHP 5.0 开发,前台空白绝大多数情况下不是「程序坏了」,而是 PHP 报错被隐藏、模板没编译出来、伪静态没配好这三类问题之一。下面按从快到慢的顺序排查。
第一步:把 PHP 报错打开,让白屏变成具体错误
这一步要做的就是让服务器把错误信息吐出来,做完后你看到的就不再是纯白页面,而是一行具体的错误提示。
用宝塔面板的话,打开「网站」→ 找到你的站点 → 点「设置」→「配置文件」,找到 display_errors = Off 改成 display_errors = On,保存后重载 PHP。
或者直接改入口文件,在 /public/index.php 最顶部第一行 <?php 之后插入:
ini_set('display_errors', 1);
error_reporting(E_ALL);
刷新前台页面,报错就出来了。常见的提示有 Fatal error: Call to undefined function(缺扩展)、SQLSTATE(数据库连不上)、failed to open stream(权限或路径问题)。
注意:故障排除完必须把
display_errors改回Off,否则报错信息会暴露数据库账号密码,是真实存在的安全风险。
第二步:核对 PHP 版本和必需扩展
这一步确认运行环境是否达标,做完后能排除「PHP 版本太新导致白屏」这个高频原因。
在宝塔「网站」→ 站点「设置」→「PHP 版本」里查看当前版本。船说 CMS 建议跑 PHP 7.0~7.4,PHP 8.0 及以上大概率直接白屏,因为 ThinkPHP 5.0 底层不兼容。如果是 8.x,切到 7.4 再试。
然后在「软件商店」→ 找到对应的 PHP →「设置」→「安装扩展」,确认这几个已装:fileinfo、gd、mbstring、mysqli、curl、openssl、zip。缺哪个装哪个,装完重启 PHP。
命令行可以用 php -v 看版本,php -m 列出已装扩展。
第三步:清空 runtime 缓存,重新编译模板
这一步清掉编译缓存,做完后前台会重新生成模板文件,能解决「后台能进、前台白屏」的典型症状。
进入网站根目录,找到 runtime 文件夹,删掉里面的 cache、temp、log 三个子目录的内容(目录本身保留)。然后在后台「系统」→「缓存管理」→ 点「清除缓存」和「更新缓存」两个按钮。
注意:不要连
runtime目录一起删,也不要把整个目录删了不重建。删完要确认该目录权限是 755,Linux 下属主属组是www:www,否则 PHP 写不进去,模板永远编译不出来。
权限修复命令:
chown -R www:www /www/wwwroot/你的站点目录
chmod -R 755 /www/wwwroot/你的站点目录
chmod -R 777 /www/wwwroot/你的站点目录/runtime
第四步:检查伪静态规则和入口文件
这一步解决「首页正常、内页全白」或「所有页面 404 后白屏」的问题,做完后内页能正常打开。
宝塔「网站」→ 站点「设置」→「伪静态」,粘贴 ThinkPHP 规则:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
同时确认 public 目录下 index.php 存在且没被改名,站点运行目录指向 public(「网站」→「设置」→「网站目录」→ 运行目录选 /public)。如果根目录下有 .user.ini 文件,先临时改名成 .user.ini.bak 测试,它有时会拦住入口文件。
注意:如果你装的是 Apache 环境,改的是
.htaccess而不是 nginx 规则,两者不能混用,别把 nginx 的写法贴到 Apache 里。
第五步:核对数据库连接信息
这一步确认程序能不能连上数据库,做完后能排除因改过数据库密码导致的全站白屏。
打开 /application/database.php,逐项核对:
'hostname' => '127.0.0.1',
'database' => '你的数据库名',
'username' => '你的数据库用户名',
'password' => '你的数据库密码',
'prefix' => 'cs_', // 按实际表前缀填
prefix 填错是最隐蔽的坑,程序不报错但查不到数据,页面就是白的。用 phpMyAdmin 看一眼实际表名前缀对照。改完保存,再清一次 runtime 缓存。
第六步:直接看日志文件,拿到根本原因
前面五步都没解决,这一步翻日志,做完后基本能锁定具体文件和行号。
日志位置:/runtime/log/年月/日期.log,比如 /runtime/log/202405/15.log。命令行实时看:
tail -f /www/wwwroot/你的站点/runtime/log/*/*.log
同时看 PHP 错误日志(宝塔在「软件商店」→ PHP「设置」→「日志」)和 nginx 的 /www/wwwlogs/你的域名.error.log。日志里搜 Fatal、Error、Exception 三个关键词,报错文件路径和行号会直接写出来,按行号去对应文件排查即可。
小结
- 第一步永远是打开
display_errors,看不到报错就是瞎猜;排查完记得关回去。 - PHP 版本卡在 7.0~7.4,8.x 直接白屏,这是船说 CMS 最常见的坑。
runtime目录清内容不清目录,权限 777、属主www:www。- 伪静态规则、运行目录指向
public、数据库表前缀,这三项任一错都会白屏。 - 前五步无效就翻
runtime/log和 nginx error.log,日志里的文件路径加行号就是答案。
原文链接:https://www.gj0.com/thread-836.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。