船说 CMS 缺少扩展如何在宝塔安装
照着这篇做完,你能在宝塔面板上把船说 CMS 报错的 PHP 扩展补齐,让网站从"Call to undefined function"的报错页面恢复正常访问。
船说 CMS 本身不带运行环境,它依赖的 PHP 扩展要由服务器上的 PHP 提供。宝塔面板装 PHP 时默认只编译了常用扩展,fileinfo、exif、redis、ionCube 这类经常是空的,于是 CMS 一跑就白屏或报错。
第一步:先确认到底缺哪个扩展
这一步要做的是把"猜"变成"看",拿到确切的扩展名再动手。打开宝塔面板左侧「网站」→ 找到你的船说 CMS 站点 → 点右侧「设置」→ 切到「网站日志」标签,看最新的 error.log;也可以在「文件」里进 /www/wwwlogs/ 目录,找到 你的域名.error.log 直接下载查看。重点抓两类关键字:Call to undefined function xxx() 说明某个扩展没装(比如 exif_read_data 对应 exif,finfo_open 对应 fileinfo);Class 'Redis' not found 说明 redis 扩展缺失。
注意:别只看浏览器上那行 500 报错,它通常什么也没说。真正的线索只在日志文件里。如果日志也是空的,去船说 CMS 的官方安装说明里核对它要求的 PHP 版本和扩展清单,这一步比乱装扩展省时间。
第二步:在 PHP 设置里安装扩展
这一步做完,常见的 fileinfo、exif、redis、opcache 就能装上。回到宝塔面板左侧「软件商店」→ 顶部切到「已安装」→ 找到站点正在用的那个 PHP 版本(比如 PHP-7.4,点开站点设置里的「PHP版本」能确认具体号)→ 点右侧「设置」→ 弹窗左侧选「安装扩展」→ 在列表里找到目标扩展 → 点它右边的「安装」,等 1 到 3 分钟,状态变成"已安装"即可。
注意:站点用的 PHP 版本必须和你装扩展的版本是同一个。船上装的是 7.4,你去 8.0 里装扩展,等于白装。宝塔允许同时装多个 PHP 版本,看错是最高频的错误。
第三步:扩展列表里没有怎么办
有些扩展(比如 ionCube、Swoole、某些版本的 sg11)不在宝塔的图形列表里,得手动处理。第一种办法:在「软件商店」搜索框直接搜扩展名,宝塔把部分扩展做成了独立插件,点「安装」即可。第二种办法:回到 PHP「设置」弹窗 → 切到「配置文件」标签,在 php.ini 末尾加一行 extension=xxx.so,保存后重启 PHP。第三种办法:PHP「设置」→「安装扩展」页面下方如果提示"当前 PHP 版本不支持",就要在「软件商店」重新编译安装一个带该扩展的 PHP 版本,或者换用 CMS 文档推荐的版本。
注意:手动加
extension=之前,先用「文件」进/www/server/php/74/lib/php/extensions/看看有没有对应的.so文件。文件不存在却硬写进 php.ini,PHP 会直接启动失败,整站跟着挂掉。
第四步:解除被禁用的函数
扩展装上了但 CMS 还报错,多半是函数被宝塔默认禁用了。进入 PHP「设置」→「禁用函数」标签 → 在列表里找到 putenv、proc_open、exec、pcntl_signal、pcntl_fork、symlink 这几个(船说 CMS 的采集、队列、伪静态生成常要用到)→ 逐个点右侧「删除」→ 保存。
注意:删函数会略微降低环境安全性,只在确实报错时删对应的那一个,别一次性清空整个列表。
第五步:重启并验证
PHP 设置弹窗切到「服务」标签 → 点「重启」,或者回「软件商店」→「已安装」→ PHP 版本右侧点「重启」。然后用终端验证:执行 /www/server/php/74/bin/php -m | grep -i fileinfo,能打印出扩展名就说明装成功了。最后刷新船说 CMS 前台和后台,报错页面应该消失。
小结
- 先看
/www/wwwlogs/域名.error.log确认扩展名,再动手装 - 扩展在「软件商店」→「已安装」→ 对应 PHP 版本 →「设置」→「安装扩展」
- PHP 版本必须和站点实际使用的一致,装错版本等于没装
- 图形列表里没有的扩展,用软件商店搜索或改 php.ini
- 装完还报错,检查「禁用函数」并重启 PHP
- 用
php -m验证,别只靠刷新页面判断
原文链接:https://www.gj0.com/thread-876.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。