
本文详解 ubuntu 21.04 因已结束生命周期(eol)而无法通过 ondřej surý ppa 安装 php 8.0 及 php8.0-pgsql 的根本原因,并提供切实可行的升级路径与替代方案。
本文详解 ubuntu 21.04 因已结束生命周期(eol)而无法通过 ondřej surý ppa 安装 php 8.0 及 php8.0-pgsql 的根本原因,并提供切实可行的升级路径与替代方案。
Ubuntu 21.04(代号 Hirsute Hippo)已于 2022 年 1 月 12 日正式结束生命周期(End of Life, EOL),这意味着官方不再提供安全更新、错误修复,且第三方主流仓库(包括广受信赖的 Ondřej Surý 的 PHP PPA)也同步停止对它的支持。因此,当你执行 sudo add-apt-repository ppa:ondrej/php 后运行 apt update,APT 实际上已无法从该 PPA 获取适用于 21.04 的 php8.0、php8.0-pgsql 等软件包——这正是你看到 E: Unable to locate package php8.0 错误的根本原因,而非网络、密钥或配置问题。
✅ 推荐解决方案:升级至受支持的 Ubuntu 版本
目前长期支持(LTS)版本为 Ubuntu 22.04 LTS(Jammy Jellyfish)和 24.04 LTS(Noble Numbat),二者均被 ppa:ondrej/php 官方完整支持,可一键安装 PHP 8.1/8.2/8.3 及扩展:
# 升级前请务必备份重要数据与配置(如 /etc/php/, /var/www/) sudo do-release-upgrade -d # 升级到下一个 LTS(如从21.04→22.04需先升至21.10再至22.04,但更建议全新安装) # 或直接下载 Ubuntu 22.04/24.04 ISO 进行干净重装(强烈推荐,避免升级残留风险)
升级完成后,即可成功启用 PHP 8.x:
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.2 php8.2-cli php8.2-pgsql php -v # 验证版本 php -m | grep pgsql # 验证 pgsql 扩展已加载
⚠️ 注意事项与替代方案
- 不建议降级或回滚 PPA:尝试强制指定旧版仓库 URL 或修改 /etc/apt/sources.list.d/ondrej-ubuntu-php-*.list 中的发行版代号(如将 hirsute 改为 focal)属于未定义行为,极易引发依赖冲突或系统不稳定。
-
临时应急(仅开发测试):若短期内无法升级系统,可考虑使用 Docker 快速运行兼容环境:
docker run --rm -it -v $(pwd):/app -w /app php:8.2-cli psql --version docker run --rm -it php:8.2-apache bash -c "docker-php-ext-install pdo_pgsql && php -m | grep pdo_pgsql"
-
验证 PostgreSQL 扩展可用性:安装 php8.2-pgsql 后,需确认 extension=pgsql.so 和 extension=pdo_pgsql.so 已在 /etc/php/8.2/cli/php.ini(CLI)及 /etc/php/8.2/apache2/php.ini(Apache)中启用;重启服务生效:
sudo systemctl restart apache2 # 或 nginx + php-fpm
? 总结:Ubuntu 21.04 的 EOL 是技术客观限制,非操作失误所致。唯一稳健、安全、可持续的解法是升级操作系统至当前受支持的 LTS 版本(22.04 或 24.04),并配合官方维护的 ppa:ondrej/php 仓库部署现代 PHP 栈。此举不仅解决 PHP 安装问题,更保障系统整体安全性与生态兼容性。
立即学习“PHP免费学习笔记(深入)”;











