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),最后用 update-alternatives 设置默认版本。

Ubuntu 22.04 默认不带 PHP 8.2,直接 apt install php8.2 会报 E: Unable to locate package php8.2——不是命令写错了,是源里压根没有这个包。
为什么 apt install php8.2 直接失败?
Ubuntu 官方仓库对 PHP 主版本做了严格锁定:22.04 锁定在 8.1,24.04 才升到 8.3。PHP 8.2 不在默认源中,必须手动添加第三方 PPA 源。
-
software-properties-common包常被最小化安装省略,导致add-apt-repository命令不存在,得先装它 - 加完
ppa:ondrej/php后必须立刻执行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),再配fastcgi_pass指向 socket 或 127.0.0.1:9000 - Apache 用户:只装
libapache2-mod-php8.2+php8.2-cli+ 扩展,别碰php8.2-fpm - 装完记得启用:Apache 用户执行
a2enmod php8.2;Nginx 用户执行sudo systemctl enable --now php8.2-fpm
装完 php -v 还是 8.1 怎么办?
这是“假成功”:PHP 8.2 确实装上了,但系统默认的 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
phpinfo() 不显示扩展或 Nginx 返回 502?
90% 是扩展没启用,或 FPM 监听配置和 Nginx 对不上。
- 扩展名必须带版本号:
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必须同步改 - Unix socket 权限要匹配:确保
listen.owner = www-data且listen.group = www-data,否则 Nginx 无法连接
最易被忽略的是:PPA 源虽方便,但它和 Ubuntu 系统更新节奏不同步——某次 apt upgrade 可能悄悄升级 libapache2-mod-php8.2,却和当前 Apache 版本不兼容。生产环境建议优先用系统默认 PHP 版本,除非明确需要 8.2 的 random 扩展或只读类特性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











