ubuntu 20.04从php 7.4.33升级到php 8.1.27需四步:一停服务清进程并purge旧包+删配置目录;二加ondřej surý ppa源并更新;三装php8.1及扩展、配web服务器;四验cli/fpm状态、error_reporting、替换create_function、校验mb_strpos参数类型、禁用mcrypt/apcu-bc。

Ubuntu 20.04 上从 PHP 7.4.33 升级到 PHP 8.1.27,关键不是简单覆盖安装,而是清除旧痕迹、切换运行时环境、验证兼容性。系统默认源不提供 PHP 8.1,必须借助 Ondřej Surý 的官方 PPA;同时,PHP 8.1 对代码和扩展有严格要求,跳过检查易导致站点白屏或报错。
一、停服务 + 清进程 + 卸载旧版
残留的 php-fpm 进程或配置会干扰新版本加载,必须彻底清理:
- 停止相关服务:sudo systemctl stop php7.4-fpm apache2 nginx(按实际 Web 服务器选)
- 禁用开机自启:sudo systemctl disable php7.4-fpm
- 查并杀残留进程:ps aux | grep -E "(php|fpm)" | grep -v grep && sudo kill -9 $(pgrep -f "php.*fpm")
- 卸载全部 PHP 7.4 组件(含配置):sudo apt purge php7.4\* libapache2-mod-php7.4 && sudo apt autoremove -y
- 手动删残留目录:sudo rm -rf /etc/php/7.4 /var/log/php7.4* /usr/lib/php/7.4
二、添加 PHP 8.1 官方源并更新索引
Ondřej Surý 的 PPA 是 Ubuntu 下最稳定、更新及时的 PHP 源,支持 8.1.27(该源中 php8.1 包自动指向当前最新小版本):
- 装基础依赖:sudo apt install -y software-properties-common ca-certificates apt-transport-https
- 添加 PPA:sudo add-apt-repository ppa:ondrej/php && sudo apt update
- 确认源生效:apt policy php8.1 应显示来自
ppa.launchpad.net/ondrej/php
三、安装 PHP 8.1.27 及常用扩展
安装时无需指定补丁号,php8.1 即代表 8.1.x 最新版(当前为 8.1.27):
- 一键安装核心与扩展:sudo apt install -y php8.1 php8.1-cli php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-zip php8.1-opcache php8.1-bcmath php8.1-intl php8.1-gd php8.1-curl
- 如用 Apache,启用模块:sudo a2enmod php8.1 && sudo systemctl restart apache2
- 如用 Nginx,确认
fastcgi_pass指向:unix:/run/php/php8.1-fpm.sock(路径以ls /run/php/为准)
四、验证 + 兼容性关键检查
装完只是第一步,必须确认运行态正确、代码无致命兼容问题:
- 检查 CLI 版本:php -v 应输出
PHP 8.1.27 - 确认 FPM 正常:sudo systemctl status php8.1-fpm 状态为 active (running)
- 检查
error_reporting:编辑 /etc/php/8.1/fpm/php.ini,设为error_reporting = E_ALL(8.1 默认开启 E_DEPRECATED) - 代码层重点排查:
– 替换所有create_function()为匿名函数或fn()
– 检查mb_strpos($str, $needle, $offset)中$offset是否为整数(浮点数会触发致命错误)
– 移除mcrypt_*和apcu-bc扩展调用(已不兼容,改用sodium或openssl)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











