ubuntu 22.04 默认不提供 php 8.2,必须先安装 software-properties-common、添加 ppa:ondrej/php 源并更新索引,否则 apt install php8.2 会报“unable to locate package”;装完还需用 update-alternatives 设置默认版本,并按 web 服务器类型选择 libapache2-mod-php8.2 或 php8.2-fpm 及对应配置。

Ubuntu 22.04 默认仓库只提供 PHP 8.1,要装 PHP 8.2 必须加第三方 PPA 源——ppa:ondrej/php 是目前最稳定、更新最及时的选择,但不能直接 apt install php 就完事,否则会装错版本或漏关键组件。
为什么 Ubuntu 22.04 装不了 php8.2 -y 就报错?
因为系统默认不带这个源,apt list php8.2* 会返回空;不先加 PPA 就执行安装,APT 找不到包,直接报 E: Unable to locate package php8.2。另外,software-properties-common 包在最小化服务器安装里常被省略,add-apt-repository 命令本身会失效。
- 先确认是否装了基础工具:
sudo apt install software-properties-common -y - 再添加源:
sudo add-apt-repository ppa:ondrej/php -y(按回车确认) - 必须立刻更新索引:
sudo apt update,否则新源里的包不可见
装 php8.2-fpm 还是 libapache2-mod-php8.2?
取决于你用 Nginx 还是 Apache。两者互斥,别同时装——libapache2-mod-php8.2 是 Apache 的模块模式,会和 php8.2-fpm 冲突;而 Nginx 必须靠 php8.2-fpm 通过 FastCGI 通信。
- Nginx 用户:装
php8.2-fpm php8.2-cli php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl php8.2-gd php8.2-zip - Apache 用户:装
libapache2-mod-php8.2 php8.2-cli php8.2-mysql ...(扩展名一样,但主包不同) - 装完记得启动服务:
sudo systemctl enable --now php8.2-fpm或sudo systemctl restart apache2
装完 php -v 显示 8.1 怎么办?
这是最常见的“假成功”:你确实装了 php8.2,但系统默认的 php 命令仍指向旧版本(比如 8.1)。Ubuntu 用 update-alternatives 管理多版本共存,默认不自动切换。
- 查当前所有 PHP 版本:
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% 是没启用;502 则基本是 FPM 监听配置和 Nginx fastcgi_pass 对不上。Ubuntu 的 PHP-FPM 配置分两层:/etc/php/8.2/fpm/php-fpm.conf 控制服务启停,真正决定监听方式的是 /etc/php/8.2/fpm/pool.d/www.conf。
- 确认监听地址:
grep "^listen =" /etc/php/8.2/fpm/pool.d/www.conf,推荐改 Unix socket:listen = /run/php/php8.2-fpm.sock - 确认权限:
listen.owner = www-data和listen.group = www-data(必须和 Nginx worker 用户一致) - Nginx 配置里对应写:
fastcgi_pass unix:/run/php/php8.2-fpm.sock; - 改完重启两个服务:
sudo systemctl restart php8.2-fpm nginx
最关键的不是命令敲得对不对,而是每一步之后都要验证:php -v、php -m | grep mysql、systemctl status php8.2-fpm、curl -I http://localhost/info.php —— 缺一不可。PPA 虽方便,但多版本共存时,路径、软链、服务状态这三处最容易静默失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











