WSL Ubuntu 26.04 安装PHP踩坑记录:PHP7.4/PHP8.1找不到包最终安装PHP8.3解决
一、环境说明
- 宿主系统:Windows
- 运行环境:WSL2
- 子系统版本:Ubuntu 26.04 LTS(codename: resolute)
- 需求:搭建PHP开发环境,最初计划安装PHP7.4,后改为PHP8.1,均安装失败,最终适配系统安装PHP8.3
二、初始操作 & 报错现象
1. 尝试安装 PHP7.4
习惯性使用 ondrej/php PPA 方式安装PHP7.4全套环境,执行完整安装命令:
bash
sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-common \
php7.4-curl php7.4-mbstring php7.4-xml php7.4-zip php7.4-gd \
php7.4-mysql php7.4-bcmath php7.4-intl php7.4-opcache
批量抛出统一类型报错:
Package php7.4 is not available, but is referred to by another package.
E: Unable to locate package php7.4
E: Package 'php7.4' has no installation candidate
所有php7.4-xxx扩展全部提示无法定位软件包
2. 调整方案,改为安装 PHP8.1
清理旧PPA源、重新添加 ppa:ondrej/php、更新软件源缓存后,执行PHP8.1安装命令,出现完全一致报错 :
所有 php8.1、php8.1-cli、php8.1-fpm、php8.1-xxx扩展 全部提示无安装候选、无法定位软件包。
三、根源排查
执行系统版本查看命令确认系统信息:
bash
lsb_release -a
输出:
Distributor ID: Ubuntu
Description: Ubuntu 26.04 LTS
Release: 26.04
Codename: resolute
核心原因
- 第三方PPA兼容性限制
ondrej/php最主流PHP多版本源,暂未适配Ubuntu 26.04,该源仅对Ubuntu 20.04/22.04/24.04提供PHP7.4、PHP8.1历史版本软件包,新版系统无对应打包,APT无法检索到安装包。 - 系统官方源版本策略
Ubuntu 26.04官方软件源不再提供带版本号的php7.4/php8.1包名 ,系统原生仅维护较新版本PHP,只能直接安装无版本前缀的php元包。 - PHP7.4生命周期问题
PHP7.4早已停止官方安全维护(EOL),新版系统底层glibc、系统库版本过高,源码编译也极易出现依赖编译失败,不推荐硬装。
四、可行备选方案梳理
方案1(本次最终采用,最简单稳妥):直接安装系统原生PHP8.3
无需添加任何第三方PPA源,直接安装不带版本号的PHP主程序+常用开发扩展(含Xdebug调试组件,适配VSCode调试)
一键安装命令
bash
sudo apt update
sudo apt install -y php php-cli php-fpm php-mysql php-curl php-mbstring php-xml php-zip php-gd php-bcmath php-intl php-opcache php-redis php-xdebug
验证安装结果
bash
php -v
输出结果:
PHP 8.3.6 (cli) (built: May 25 2026 13:12:06) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans
安装成功,自带OPcache、Xdebug,满足项目开发、断点调试需求。
PHP-FPM常用管理命令(适配Nginx建站)
bash
# 查看运行状态
systemctl status php8.3-fpm
# 重启服务
sudo systemctl restart php8.3-fpm
# 设置开机自启
sudo systemctl enable php8.3-fpm
# 查看监听套接字(Nginx配置必备)
ls /run/php/
方案2:必须使用PHP7.4/PHP8.1(老项目强制兼容)
- Docker隔离部署(推荐,不改系统、无依赖冲突)
拉取对应版本php-fpm镜像,容器独立运行,挂载Windows项目目录,Nginx反向代理容器端口即可,多PHP版本并行互不干扰。 - 降级WSL子系统
备份数据后卸载Ubuntu26.04,微软商店重装Ubuntu24.04 LTS,再通过ondrej/php PPA正常安装PHP7.4/PHP8.1。 - 源码编译安装(不推荐)
新版系统底层库版本过高,手动解决大量依赖问题,编译报错概率极高,维护成本大。
五、总结经验
- 安装PHP前先执行
lsb_release -a确认Ubuntu代号,避免惯性使用旧系统安装脚本踩版本兼容坑; - Ubuntu 26.04不要强行用PPA安装PHP7.4、PHP8.1,优先使用系统原生新版PHP8.3,兼容性、安全性更好;
- 老旧项目强制低版本PHP,优先Docker方案,其次降级WSL系统,尽量避免源码编译折腾;
- PHP7.4已终止维护,新项目尽量选用PHP8.1及以上受支持版本。
维护命令
1、取消 php8.3-fpm 开机自启
bash
sudo systemctl disable php8.3-fpm
2、如果现在正在运行,顺手停止服务(可选)
bash
sudo systemctl stop php8.3-fpm
3、验证是否关闭自启
bash
systemctl is-enabled php8.3-fpm
输出 disabled 就代表开机不会自动启动了。
后续需要手动用 PHP-FPM 时,再手动启动:
bash
sudo systemctl start php8.3-fpm