宝塔面板PHP不支持原地升级,只能安装新版本(如8.0)后切换站点绑定;软件商店无“升级”按钮,因采用多版本共存机制,7.4与8.0为独立实例,已安装版本仅提供设置、删除等操作。

不能直接“升级”PHP 7.4到8.0,只能安装PHP 8.0后切换站点绑定——旧版本不会被覆盖,也不会自动迁移配置或扩展。
为什么软件商店里没有“升级”按钮
宝塔的PHP管理是多版本共存机制,PHP 7.4和PHP 8.0是两个完全独立的安装实例。你在软件商店看到的「安装」按钮,只对未安装的版本有效;已安装的PHP 7.4右侧只有「设置」「删除」「设为默认」,没有「升级」选项。点不动、找不到升级入口,不是面板故障,是设计如此。
安装PHP 8.0时必须手动勾选的关键扩展
新装的PHP 8.0默认不继承PHP 7.4的扩展和php.ini配置。常见报错如Class 'PDO' not found、Call to undefined function redis_connect(),基本都源于这一步漏选。
-
pdo_mysql(几乎所有CMS和框架必需) -
fileinfo(Laravel 9+、WordPress插件上传、Typecho附件依赖) -
opcache(不勾它,Laravel首页加载可能慢2秒以上) -
redis(如果你用Redis做缓存或Session) -
mbstring、curl、openssl(基础兼容性三件套)
ionCube、Swoole、ZendGuard这类需单独在PHP 8.0的「设置 → 安装扩展」里加载,安装时勾选无效。
切换后网站500或白屏,先查这三个地方
切换完立刻访问出错,别急着重装,大概率是以下三项没同步更新:
-
/www/server/php/80/etc/php.ini里的upload_max_filesize还是默认2M,而你的程序需要64M -
.user.ini文件锁定了旧值(尤其Discuz、老ThinkPHP项目),它会覆盖php.ini,得手动改或删 - 日志路径不对:
tail -f /www/wwwlogs/your-site.error.log,常看到Undefined array key "xxx"(PHP 8.0严格模式报错)或mysql_connect() is deprecated(说明代码还调用了已移除函数)
注意:PHP 8.0彻底移除了mysql_*系列函数,ThinkPHP 3.2、帝国CMS 7.5等老程序必须改代码或降级回PHP 7.4。
卸载PHP 7.4前务必确认的两件事
很多人切完就顺手点了PHP 7.4右侧的「删除」,结果另一个没注意的站点崩了——因为那个站还在用7.4,只是你忘了切换。
- 进「网站」列表,逐个点开「设置 → PHP版本」,确认所有站点都已明确绑定到
PHP 8.0或其他已安装版本 - 检查计划任务:有些定时脚本写死了
/usr/bin/php,但新版实际路径是/www/server/php/80/bin/php,不改会导致任务静默失败
删掉PHP 7.4本身很快,但恢复起来要重装+重配扩展+重调php.ini,远比留着它占几MB磁盘麻烦得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











