船说 CMS 支持 PHP7.4 吗

juming
juming 初级会员超兽战士
发布于 2026-10-08 08:34 ·2 浏览 ·0 回复

这篇教程教你用 4 步判断自己手上的船说 CMS 到底能不能跑在 PHP 7.4 上,遇到报错时能分清「能救」和「别硬上」两种情况,并给出对应的处理办法。

第一步:先确认你手上是哪个版本的船说 CMS

这一步的目标是拿到准确版本号,因为「船说 CMS 支不支持 PHP 7.4」这个问题,答案完全取决于版本——同名的不同版本可能一个能跑、一个直接白屏。

三个查法,任选一个:

  1. 登录后台,看页面底部版权行或「系统」→「系统信息」页面,通常写着类似 v2.x 的版本号和内核标识。
  2. 直接翻文件:进网站根目录,找 data/config/version.php、config/version.php 或 app/version.php 这类文件,打开看版本常量。
  3. 命令行搜(Linux 服务器):
grep -rn "version" /www/wwwroot/你的站点/data/config/ 2>/dev/null | head

拿到版本号后记下来。判断原则很简单:**2018 年之前发布的主版本,基本都是 PHP 5.3–5.6 时代写的,跑 PHP 7.4 大概率有致命错误;2019 年之后、官方明确写过「支持 PHP 7.x」的版本,才有戏。**

注意:不要只看官网宣传页写的「支持 PHP7」。那股宣传可能针对的是最新版,而你手上的包可能是几年前的旧包。以实际文件里的版本号为准。

第二步:搭一个 PHP 7.4 的测试站跑一遍冒烟测试

这一步的目的是用最小成本把问题暴露出来,而不是直接在正式站上换 PHP 版本。

在宝塔面板(或你习惯的环境)里新建一个站点,PHP 版本选 7.4(7.4 最后一个版本是 7.4.33),把船说 CMS 装上去。然后按顺序点这几下:

  1. 打开首页,看是否正常渲染。
  2. 打开 /admin 或 /admin.php 后台登录页,用管理员账号登录。
  3. 进「内容」→「文章管理」→「发布文章」,保存一篇。
  4. 进「附件」或「媒体库」,上传一张 jpg。
  5. 打开前台栏目页,确认列表能出来。

同时把错误显示打开,否则你只会看到白屏,不知道错在哪。编辑 PHP 7.4 的 php.ini:

display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /www/wwwlogs/php_error.log

改完重启 PHP-FPM(宝塔:软件商店 → PHP 7.4 → 设置 → 服务 → 重启)。

注意:改完记得测完就关掉 display_errors,否则线上会把文件路径暴露给访客。

第三步:按报错类型判断「能不能救」

这一步决定你后面是修代码还是换方案。把第二步里出现的错误按下面三类分:

A 类:Deprecated / Notice / Warning(能救)

典型长这样:

  • Deprecated: Function create_function() is deprecated
  • Deprecated: The each() function is deprecated
  • Deprecated: Array and string offset access syntax with curly braces is deprecated
  • Deprecated: Function get_magic_quotes_gpc() is deprecated

这些在 PHP 7.4 里只是「提示」,程序照样跑,只是日志被刷爆。能救。

B 类:Fatal error / Parse error(要看工作量)

  • Fatal error: Call to undefined function mysql_connect()
  • Fatal error: Call to undefined function ereg()
  • Parse error: syntax error, unexpected '}'

这些是真的跑不起来。mysql_* 系列函数在 PHP 7.0 就被移除了,全部要改成 mysqli 或 PDO,这是最费工的一类。

C 类:模板/插件报错

如果只有某个栏目页炸,首页和后台正常,那多半是模板标签或某个插件写的 PHP 不兼容,单独改那一个文件就行。

第四步:真要上 7.4,按这个顺序改

这一步给你一套可执行的最小改动清单。动手前先完整备份网站目录和数据库,别问为什么。

  1. 全局替换 create_function:改成匿名函数。原来是 create_function('$a', 'return $a+1;'),改成 function($a){ return $a+1; }。
  2. each() 循环改 foreach:while(list($k,$v) = each($arr)) 改成 foreach($arr as $k => $v)。
  3. ereg / eregi 改 preg_match:注意正则要补上 / 定界符。
  4. mysql_* 改 mysqli_*:这一步工作量最大,如果涉及几十个文件,收益不如直接换系统。
  5. 临时压掉弃用警告(只作过渡,别长期这么干):
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
  1. 用工具扫一遍兼容性,比人工翻文件快得多:
composer global require phpcompatibility/php-compatibility
phpcs --standard=PHPCompatibility --runtime-set testVersion 7.4- /www/wwwroot/你的站点/

注意:PHP 7.4 本身已于 2022 年 11 月 28 日停止安全支持。如果你是为了「用新一点的 PHP」才升到 7.4,其实没必要——新站直接上 PHP 8.1 或 8.2。升 7.4 的唯一合理理由是「你的老代码能过 7.4 但过不了 8.x」。

小结

  • 船说 CMS 能不能跑 PHP 7.4,取决于你手上那个版本,不存在一句话的统一答案,先查版本号再下结论。
  • 测试要在独立环境做,打开 display_errors 才看得见真实错误。
  • 只有 Deprecated / Notice,说明能跑,把错误级别调低即可;出现 Fatal error 里的 mysql_*、ereg、Parse error,才是真不兼容。
  • 改代码的顺序:create_function → each → ereg → mysql_*,工作量递增,最后一步往往不值得做。
  • 无论结论如何,PHP 7.4 已停更,新项目请直接选 PHP 8.1/8.2。
版权声明:本文来自 GJ站长论坛《船说 CMS 支持 PHP7.4 吗》
原文链接:https://www.gj0.com/thread-844.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~