游乐游手机版
首页/系统平台/文章详情

Linux最新系统如何安装PHP7.4与老版本共存方法详解

时间:2026-06-08 07:04
虽然 PHP 7 4 早在2023年11月就已停止官方维护,但在许多生产环境中它依然被广泛沿用,堪称“钉子户”。若你需要在 Ubuntu 24 04、CentOS Stream 9 这类较新系统上安装它,直接执行apt install php7 4或yum install php74大概率会失败——

虽然 PHP 7.4 早在2023年11月就已停止官方维护,但在许多生产环境中它依然被广泛沿用,堪称“钉子户”。若你需要在 Ubuntu 24.04、CentOS Stream 9 这类较新系统上安装它,直接执行apt install php7.4yum install php74大概率会失败——主流发行版的软件仓库早已将其移除。要想顺利安装,必须换一种方式:要么借助可靠的第三方源,要么亲自动手编译。如果还打算让它与 PHP 8.x 版本和平共处,update-alternatives 是一个轻量可控的方案,但需注意它仅影响命令行(CLI)环境,Web 服务器侧还需额外配置。

Linux怎么安装PHP 7.4在最新系统上 Linux老版本PHP并存详解

Ubuntu/Debian 上安装 PHP 7.4:使用 Ondřej PPA 源

当前来看,通过 Ondřej 的 PPA 源安装是最便捷且最稳定的途径,适用于 Ubuntu 22.04+ 及 Debian 11/12(后者可能需要手动适配)。该源提供了预编译二进制包,包含常用扩展,能帮你省去处理依赖的麻烦。

  • 首先,添加软件源:sudo add-apt-repository ppa:ondrej/php。这里有一个细节需要注意:该 PPA 可能不完全兼容 Ubuntu 24.04 LTS 的默认仓库配置,添加后建议检查 sources.list.d 中的条目是否正常启用,或确认签名密钥是否过期。
  • 接着更新包列表:sudo apt update。若遇到 NO_PUBKEY 错误,通常需要补全密钥:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C。当然,密钥可能轮换,请以 apt update 的实际报错为准。
  • 然后安装核心组件:sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip。可根据实际需求增加或减少扩展。
  • 最后验证版本:运行 php7.4 -v,应输出类似 PHP 7.4.33 的信息(截至2026年4月,这是该分支的最后一个安全更新版本)。

CentOS/RHEL 系统安装 PHP 7.4:唯有源码编译

对于 Red Hat 系系统,如 CentOS 8 Stream 及更新版本,官方仓库和 EPEL 源均已移除 PHP 7.4。因此,想通过 yum install php74 一键安装并不现实——要么找不到软件包,要么安装的版本缺失关键扩展(例如 pdo_mysqlopcache 等)。此时,源码编译是唯一可靠的选择。

  • 第一步,下载源码:wget https://www.php.net/distributions/php-7.4.33.tar.gz,解压后进入目录。
  • 第二步,确保编译依赖齐全:sudo yum install gcc make autoconf libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel sqlite-devel oniguruma-devel libzip-devel bzip2-devel gmp-devel。若为 CentOS 8+,通常还需添加 libxcrypt-devel,否则配置阶段可能报错。
  • 第三步,配置编译参数。特别注意:不要直接照搬网上的旧教程。对于 Apache 2.4+,默认不带 apxs,因此应去掉 --with-apxs2 参数,改用 --enable-fpm 来启用 PHP-FPM。另外,--with-openssl-dir 参数在新版 OpenSSL 3.x 下可能存在问题,直接使用 --with-openssl 通常更稳妥。
  • 编译安装完成后,还有一个关键步骤:需要手动创建 systemd 服务文件(例如 /usr/lib/systemd/system/php74-fpm.service)。若不执行此操作,直接运行 systemctl start php74-fpm 必定失败。

让 PHP 7.4 与 8.1/8.2 在同一台机器上共存

许多开发者期望用 update-alternatives 来管理所有 PHP 版本,但其功能范围其实有限。该工具只能切换 Shell 命令行中 php 命令的指向,对于 Web 服务(无论是 Apache 还是 Nginx)完全无效。Web 服务器加载的是独立的 PHP 模块,或者连接的是独立的 PHP-FPM 进程,这些都需要单独配置。

  • 注册版本到 update-alternativessudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81。后面的数字代表优先级,决定默认选用的版本。
  • 交互式切换版本:运行 sudo update-alternatives --config php,选择对应编号后,php -v 命令会立即生效。
  • 对于 Apache 用户:切换 Web 使用的 PHP 版本,需要成对使用 a2enmod php7.4a2dismod php8.1 这样的命令,并且务必重启 Apache 服务后,phpinfo() 显示的才是 Apache 实际加载的版本。
  • 对于 Nginx + PHP-FPM 用户:关键在于 FPM 监听的 socket 路径。通常会是 /run/php/php7.4-fpm.sock/run/php/php8.1-fpm.sock 等独立文件。Nginx 配置中的 fastcgi_pass 指令必须精确指向你期望的 socket 路径,不能简单写成 127.0.0.1:9000(除非你特意配置了同一端口)。

为什么 php -v 显示 7.4 但 phpinfo() 显示 8.1?

这是环境配置中最容易令人困惑的地方:命令行接口(CLI)与 Web 服务器接口(SAPI)是两套完全独立的运行机制。你修改 update-alternatives,影响的仅仅是终端里执行的 php 命令。而 Apache 或 Nginx 加载的是编译时已绑定好的 PHP 模块,或者连接的是独立运行的 PHP-FPM 进程,这与 /usr/bin/php 这个软链接指向何处无关。

  • 查看 CLI 版本:直接运行 php -v,或使用 which php 查看命令路径。
  • 查看 Apache 加载的模块版本:运行 apache2ctl -M | grep php,然后检查 /etc/apache2/mods-enabled/ 目录下哪个 php*.load 文件是软链接的目标。
  • 查看 Nginx + FPM 的版本:通过 ps aux | grep fpm 查看进程,确认运行的是 php7.4-fpm 还是 php8.1-fpm,再核对它的配置文件(通常是 www.conf)中 listen = 指定的 socket 路径,是否与 Nginx 配置中的 fastcgi_pass 一致。
  • 一个实用的调试技巧:在 Web 目录下创建一个 test.php 文件,内容仅一行:。通过浏览器访问该文件,它会直接输出 Web SAPI 实际调用的 PHP 二进制文件完整路径,比查看庞大的 phpinfo() 页面更为直接。
来源:https://www.php.cn/faq/2395962.html
上一篇阿里云香港VPS新手快速了解核心功能指南 下一篇Mac清理Zoom录制视频缓存的方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Win11频繁断网提示默认网关不可用怎么办
系统平台 · 2026-07-03

Win11频繁断网提示默认网关不可用怎么办

先聊聊一个很常见的问题:Windows 11 电脑刚连接 Wi-Fi 或插上网线时还能正常访问网络,可几分钟后突然“掉线”,任务栏右下角出现“无 Internet”提示,右键诊断显示“默认网关不可用”。这时候重启电脑或点击“修复”能暂时恢复,但用不了多久又会断开。这说明系统其实已经获得了 IP 地址

Mac如何取消正在进行的系统备份任务
系统平台 · 2026-07-03

Mac如何取消正在进行的系统备份任务

Mac 正在执行时间机器备份时,进度条卡在“正在准备”或“备份中”迟迟不动,磁盘读写与网络带宽被持续占用——这种情形下,大多数用户都希望能立即中断任务。设想这样一个场景:你正赶着安装大型软件,或者急需拔出外接硬盘,但系统却执意继续备份。别担心,这里有一套行之有效的解决方案:先在“活动监视器”中强制退

电脑显示器刷新率锁死60Hz无法调整的解决方法
系统平台 · 2026-07-03

电脑显示器刷新率锁死60Hz无法调整的解决方法

显示器刷新率锁死60Hz时,需检查DP或HDMI线缆版本并更换VESA认证线缆;可通过显示适配器属性勾选隐藏刷新率选项、显卡控制面板自定义时序、清洁安装驱动或使用CRU工具修改EDID强制启用高刷模式。

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程
系统平台 · 2026-07-03

Linux系统下Systemd服务管理从零开始方法步骤详解完整教程

systemctl管理systemd服务,修改配置于 etc systemd system,启用需daemon-reload再enable。查看状态关注Loaded行,masked服务需unmask并重载恢复。reload发SIGHUP,restart中断连接,reload-or-restart自动降级。日常禁用优先用disable。

Mac如何取消同步iPhone书签和历史记录
系统平台 · 2026-07-03

Mac如何取消同步iPhone书签和历史记录

彻底关闭iCloudSafari同步并选择“保留在Mac上”,然后手动删除书签文件夹或清理~ Library Safari Bookmarks plist文件,最后通过iCloud官网确认同步已失效,即可彻底清除Mac上的iPhone同步书签。