如果你也跟我一样,Debian 11 服务器还在跑 WordPress + PHP 7.4,每天看着官方安全提醒「7.4 已死」心里发慌,却又担心升级挂站——恭喜你,这篇Debian 11 升级 PHP 8.2 教程就是为你写的。
本文关键词:Debian 11 升级 PHP 8.2、PHP 7.4 平滑升级到 PHP 8.2、Debian 11 安装 PHP 8.2 MySQL 扩展、WordPress 提示缺少 MySQL 扩展。
一、为什么要升级?官方都催命了
PHP 7.4 已经在 2022-11-28 结束生命周期,安全补丁不再更新。WordPress 6.x 虽然还能跑,但官方已经发出“建议最低 PHP 8.0”的温柔警告。再等下去,插件作者都要撂挑子了。
二、升级前先做两件小事
-
- 备份!备份!备份!
# 列出所有 php7.4 包
dpkg -l | grep php7.4 | tee ~/php74-list.txt
# 备份配置文件
sudo cp -r /etc/php/7.4 ~/php74-backup
- 确认网站可用时间:升级就几分钟,但回滚需要重启,选个凌晨没人访问的点儿。
三、添加 Sury 源:Debian 官方仓库没有 8.2
sudo apt install -y lsb-release apt-transport-https ca-certificates wget
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
四、安装 PHP 8.2 全家桶
sudo apt install php8.2 php8.2-fpm php8.2-cli \
php8.2-common php8.2-mysql php8.2-xml php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-opcache php8.2-zip \
php8.2-apcu
注意:Debian 11 安装 PHP 8.2 MySQL 扩展的关键包就是 php8.2-mysql
,它一次性把 mysqli、pdo_mysql、mysqlnd 都带上了。
五、Web 服务器切换指向
Nginx 用户
sudo nano /etc/nginx/sites-available/your-site.conf
把
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
改成
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
sudo nginx -t && sudo systemctl reload nginx
Apache 用户
sudo apt install php8.2-fpm
sudo a2disconf php7.4-fpm
sudo a2enconf php8.2-fpm
sudo systemctl restart apache2
六、常见坑合集(踩过才懂)
坑 1:php -v 显示 8.4?
你之前可能顺手装了 php8.4-cli
,抢了默认。
sudo apt remove --purge php8.4*
sudo apt install --reinstall php8.2-cli
sudo update-alternatives --set php /usr/bin/php8.2
坑 2:php-fpm 启动报找不到 7.4 目录
因为你把 7.4 的 pool 直接复制到 8.2,主配置里 include 路径没改。
sudo nano /etc/php/8.2/fpm/php-fpm.conf
把
include=/etc/php/7.4/fpm/pool.d/*.conf
改成
include=/etc/php/8.2/fpm/pool.d/*.conf
sudo php-fpm8.2 -t && sudo systemctl restart php8.2-fpm
坑 3:WordPress 提示「缺少 MySQL 扩展」
实际是 PDO 扩展与 pdo_mysql 版本不匹配,符号表对不上。
sudo apt install --reinstall php8.2-common php8.2-pdo php8.2-mysql
七、清理战场:卸载 PHP 7.4
sudo apt remove --purge php7.4*
sudo apt autoremove
sudo rm -rf /etc/php/7.4 /usr/lib/php/20190902
八、最终检查清单
php -v
显示 PHP 8.2.xphp -m | grep -E 'mysqli|pdo_mysql|mysqlnd'
三兄弟都在- WordPress 后台「站点健康」全部绿灯
九、一键脚本(懒人福利)
把下面保存为 upgrade-php82.sh
,chmod +x
后直接跑:
#!/bin/bash
set -e
sudo apt update
sudo apt install -y php8.2 php8.2-{fpm,cli,mysql,common,xml,curl,gd,mbstring,opcache,zip,apcu}
sudo apt remove --purge php7.4* -y
sudo apt autoremove -y
sudo systemctl restart php8.2-fpm nginx
echo "PHP 8.2 升级完成!"
十、写在最后
整个流程下来,Debian 11 升级 PHP 8.2其实就三件事:加 Sury 源、装 8.2、把 Web 指过去。剩下的坑基本都是复制粘贴路径没改、扩展版本对不上。跟着本文一步一步来,PHP 7.4 平滑升级到 PHP 8.2根本不难。
祝各位老板升级顺利,WordPress 再不提示「缺少 MySQL 扩展」!
没有回复内容