在 Debian 上升级 PHP(例如从 PHP 7.4 → 8.1/8.2/8.3)时,有几个关键风险点和标准做法需要注意。下面按「注意事项 → 升级步骤 → 常见坑」来说明。
PHP 大版本升级(7.x → 8.x)不保证向后兼容:
create_function、each)✅ 建议:
php -l file.php # 语法检查
composer why-not php:8.2
apt upgrade phpDebian 默认仓库 PHP 版本较低(如 Debian 11 = 7.4)。
常见做法:
PHP 升级后必须确认:
libapache2-mod-php* 版本例如:
/run/php/php7.4-fpm.sock
→
/run/php/php8.2-fpm.sock
PHP 扩展是按版本编译的:
php7.4-mysql
php8.2-mysql # 必须重新装
php -v很多人“命令行是新版,网站还是旧版”。
apt install -y lsb-release ca-certificates apt-transport-https
curl -sSL https://packages.sury.org/php/README.txt
# 按官方说明添加 GPG + repo
apt update
apt install php8.2 php8.2-fpm php8.2-cli
update-alternatives --set php /usr/bin/php8.2
Web 服务单独切换 FPM:
a2disconf php7.4-fpm
a2enconf php8.2-fpm
systemctl restart apache2
php -v
php -m
nginx -t
systemctl status php8.2-fpm
日志重点看:
/var/log/php8.2-fpm.log/var/log/nginx/error.logphperror.log❌ 只升级 CLI,网站没变
❌ 忘了装 php8.x-mbstring / curl / gd
❌ Composer 依赖不支持新 PHP
❌ OPcache / session 配置丢失
❌ 旧 cron 仍用旧 php 路径
✅ 测试环境先升
✅ 保留旧版本至少 1 周
✅ 用 Docker 做回归测试
✅ 记录扩展清单
php -m > php_modules.txt
如果你愿意,可以告诉我:
我可以给你一套精确命令。