ubuntu 22.04 默认不提供 php 8.2,直接 apt install php8.2 必报“unable to locate package”,因官方源锁定 php 8.1;必须先安装 software-properties-common、添加 ppa:ondrej/php 源并执行 apt update,再按 web 服务器类型选择安装 php8.2-fpm(nginx)或 libapache2-mod-php8.2(apache)。

Ubuntu 22.04 默认不带 PHP 8.2,直接 apt install php8.2 必然失败——不是命令错了,是源里根本没这个包。
为什么 apt install php8.2 报 “Unable to locate package”
Ubuntu 官方仓库对 PHP 主版本做了硬性锁定:22.04 只提供 8.1,8.2 需要第三方 PPA。Ondřej Surý 的 ppa:ondrej/php 是目前最稳定、更新及时的来源,但必须手动添加。
-
software-properties-common包常被最小化安装省略,导致add-apt-repository命令不存在,得先运行sudo apt install software-properties-common - 加完 PPA 后必须立刻执行
sudo apt update,否则新源不可见 - 验证源是否生效:
apt list php8.2*有输出才代表可以继续安装
该装 php8.2-fpm 还是 libapache2-mod-php8.2
取决于你用 Nginx 还是 Apache——两者不能混用,选错会直接导致 502 或服务冲突。
- Nginx 用户:只装
php8.2-fpm+php8.2-cli+ 扩展(如php8.2-mysql),别碰libapache2-mod-php8.2 - Apache 用户:只装
libapache2-mod-php8.2+php8.2-cli+ 扩展,别装php8.2-fpm - 装完必须启用:Nginx 用户执行
sudo systemctl enable --now php8.2-fpm;Apache 用户执行a2enmod php8.2
php -v 还是 8.1?怎么让系统认准 8.2
装上了 ≠ 默认用了。Ubuntu 多版本共存时,/usr/bin/php 是个软链,指向旧版本(比如 /usr/bin/php8.1)是常态。
- 查所有已安装版本:
ls /usr/bin/php* - 手动设默认:
sudo update-alternatives --set php /usr/bin/php8.2 - 验证:
php -v和which php都应显示 8.2;若无效,检查/etc/alternatives/php是否软链正确,或重装替代项:sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
Nginx 返回 502 或 phpinfo() 不显示扩展
90% 是 FPM 监听配置和 Nginx 的 fastcgi_pass 没对上,或者扩展名没带版本号。
- 扩展必须带版本号:
php8.2-curl装的是给 8.2 用的,php-curl可能装到 8.1 上 - FPM 关键配置在
/etc/php/8.2/fpm/pool.d/www.conf,不是php-fpm.conf - 改监听地址(如
listen = /run/php/php8.2-fpm.sock)后,Nginx 的fastcgi_pass必须同步改,且 socket 文件权限要匹配:listen.owner = www-data且listen.group = www-data
最容易被忽略的是:FPM 配置改了不 reload,Nginx 配置改了不 nginx -t && systemctl reload nginx,以及 socket 文件权限错位——这三个点卡住的人最多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











