赞片CMSPHP版本不兼容

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

学完这篇,你能自己判断赞片CMS报的错到底是不是PHP版本引起的,并且能动手把版本调到能跑的状态,或者在没有旧版本PHP的空间里把代码改到兼容。

第一步:先确认报错是不是PHP版本问题

这一步要拿到两个信息:服务器当前跑的是哪个PHP版本,以及报错信息里出现了什么关键字。两个信息凑齐,才能定性。

查PHP版本有三种办法,任选一种:

  • 在宝塔面板左侧点「软件商店」→「已安装」,看 PHP 后面显示的版本号,比如 PHP 8.0、PHP 7.4;
  • 在网站根目录建一个 info.php,内容写 <?php phpinfo(); ?>,浏览器访问 你的域名/info.php,第一行就是版本;
  • 宝塔面板「网站」→点你的站点→「设置」→「PHP版本」标签页,下拉框里选中的那个就是当前生效版本。

报错信息里如果出现下面这些关键字,基本可以判定是版本不兼容,而不是程序本身的bug:

  • Deprecated: Function create_function() is deprecated
  • Fatal error: Uncaught Error: Call to undefined function each()
  • Call to undefined function mysql_connect()
  • Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_gpc()
  • Warning: preg_replace(): The /e modifier is no longer supported

注意:赞片CMS这类视频站程序大多是2016—2020年间的代码,官方文档写的运行环境通常是 PHP 5.6 到 PHP 7.2。如果你装的是 PHP 8.0 及以上,几乎必然报错,这不是你装错了。

第二步:优先尝试降级PHP,成本最低

这一步的目标是把站点环境退回到程序能跑的范围,也是最省事的做法。

宝塔面板操作路径:

  1. 「软件商店」→「运行环境」,找到 PHP 7.2 或 PHP 5.6,点「安装」(编译安装大约10—30分钟);
  2. 安装完成后回到「网站」→ 点站点名 →「设置」;
  3. 切到「PHP版本」标签,下拉选择刚装的 PHP 7.2;
  4. 点「保存」,然后「网站」页面点站点右侧的「重载配置」。

如果面板里只有 PHP 8.x,说明主机商锁定了版本,这种情况下不要硬折腾,直接进第三步。

注意:降级前先在「数据库」里把整站数据库导出备份,路径是宝塔「数据库」→ 找到对应库 →「备份」。换PHP版本偶尔会导致表结构或字符集出问题,有备份才敢动。

第三步:不能降级,就按报错逐个改代码

这一步适用于只能用 PHP 7.4/8.x 的空间。原则是:改一处、测一处,不要一次性全改。

常见改法对照:

1. each() 已被 PHP 8 移除
找到报错文件行号,把

while (list($k, $v) = each($arr)) {

改成

foreach ($arr as $k => $v) {

2. create_function() 已移除

usort($a, create_function('$x,$y', 'return $x-$y;'));

改成

usort($a, function($x, $y) { return $x - $y; });

3. mysql_* 系列函数已移除
这类改动量大,不建议手改。如果赞片CMS本身带 PDO 或 mysqli 的配置文件,优先在 data/config.php 或 include/config.inc.php 里把数据库连接方式切过去;切不了的话,降到 PHP 5.6 是唯一现实选择。

4. preg_replace 的 /e 修饰符已移除

preg_replace('/abc/e', ...)

改成 preg_replace_callback('/abc/', function($m){ ... }, $str)。

5. 字符串花括号取值
$str{0} 改成 $str[0]。可以用编辑器全局替换,注意只替换变量后跟花括号加数字的模式。

注意:改之前把要动的文件复制一份,命名成 xxx.php.bak。改崩了直接改回来,比对着报错找半天快得多。

第四步:补齐扩展和伪静态

版本对了还跑不起来,八成是扩展缺了。

在宝塔「软件商店」→ 点当前PHP版本的「设置」→「安装扩展」,确认这几个是开启状态:fileinfo、curl、gd、mbstring、openssl。赞片CMS做视频封面和远程采集时会用到 curl 和 gd,缺了会出现「上传失败」「采集无结果」。

伪静态规则在「网站」→ 站点 →「设置」→「伪静态」,选 thinkphp 或粘贴官方提供的规则,保存后重载。

第五步:清缓存验证

最后一步是清掉旧版本PHP跑出来的缓存文件,否则会出现「改了还是报错」的假象。

进宝塔「文件」,定位到站点根目录,删除 runtime/ 目录下的全部内容(目录本身保留),再删 data/cache/ 里的缓存文件。然后浏览器访问首页和后台 /admin.php,两项都能正常打开就算成了。

注意:runtime 目录删除后第一次访问会变慢,那是程序在重新生成缓存,正常现象。

小结

  • 先拿PHP版本号 + 报错关键字,确认是不是版本问题,别上来就改代码。
  • 首选降级到 PHP 7.2 或 5.6,宝塔路径是「软件商店」装版本 →「网站」→「设置」→「PHP版本」切换。
  • 降不了级就按报错改:each()、create_function()、mysql_*、preg_replace /e、$str{0} 这五类是最常见的。
  • 扩展要开 fileinfo、curl、gd、mbstring,伪静态规则别忘配。
  • 动手前备份数据库和源文件,改完删 runtime 缓存再测。
版权声明:本文来自 GJ站长论坛《赞片CMSPHP版本不兼容》
原文链接:https://www.gj0.com/thread-665.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~