WSL Ubuntu 26.04 安装PHP踩坑记录:PHP7.4/PHP8.1找不到包最终安装PHP8.3解决

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

核心原因

  1. 第三方PPA兼容性限制
    ondrej/php 最主流PHP多版本源,暂未适配Ubuntu 26.04,该源仅对Ubuntu 20.04/22.04/24.04提供PHP7.4、PHP8.1历史版本软件包,新版系统无对应打包,APT无法检索到安装包。
  2. 系统官方源版本策略
    Ubuntu 26.04官方软件源不再提供带版本号的php7.4/php8.1包名 ,系统原生仅维护较新版本PHP,只能直接安装无版本前缀的php元包。
  3. 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(老项目强制兼容)

  1. Docker隔离部署(推荐,不改系统、无依赖冲突)
    拉取对应版本php-fpm镜像,容器独立运行,挂载Windows项目目录,Nginx反向代理容器端口即可,多PHP版本并行互不干扰。
  2. 降级WSL子系统
    备份数据后卸载Ubuntu26.04,微软商店重装Ubuntu24.04 LTS,再通过ondrej/php PPA正常安装PHP7.4/PHP8.1。
  3. 源码编译安装(不推荐)
    新版系统底层库版本过高,手动解决大量依赖问题,编译报错概率极高,维护成本大。

五、总结经验

  1. 安装PHP前先执行 lsb_release -a 确认Ubuntu代号,避免惯性使用旧系统安装脚本踩版本兼容坑;
  2. Ubuntu 26.04不要强行用PPA安装PHP7.4、PHP8.1,优先使用系统原生新版PHP8.3,兼容性、安全性更好;
  3. 老旧项目强制低版本PHP,优先Docker方案,其次降级WSL系统,尽量避免源码编译折腾;
  4. 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