结论:用 vagrant 搭建 php 7.4 开发虚拟机必须选用 centos 7 或 ubuntu 20.04 box 并手动启用 remi 等旧源,因 ubuntu 22.04+/centos 8+ 默认源已移除 php 7.4 支持,否则 php -v 会报错或安装错误版本。

直接说结论:用 Vagrant 搭建 PHP 7.4 开发虚拟机,不能依赖 Ubuntu 22.04+ 或 CentOS 8+ 默认源——它们已移除 PHP 7.4 支持。必须显式指定兼容的 Box + 手动启用旧源(如 remi 或 ondrej),否则 vagrant up 后执行 php -v 会报错或装上错误版本。
选对 Box:CentOS 7 或 Ubuntu 20.04 是底线
PHP 7.4 的官方支持生命周期已于 2023 年 11 月结束,主流新 Box 已不再预装或提供安全更新。硬要装 PHP 7.4,Box 必须满足两个条件:
- OS 内核和包管理器仍支持 PHP 7.4 二进制包(即未删除该版本仓库)
- 不强制升级到 PHP 8.x(某些新版 Ubuntu 自动替换
php包为 8.1+)
centos/7 和 ubuntu/focal64(Ubuntu 20.04)是目前最稳妥的选择。ubuntu/jammy64(22.04)默认只有 PHP 8.1,即使加 apt install php7.4 也会失败(包不存在)。hashicorp/bionic64(18.04)虽有 PHP 7.4,但其系统源已归档,apt update 会大量 404,需手动换源,不推荐新手。
Shell Provisioner 装 PHP 7.4:remi 源是 CentOS 7 唯一靠谱路径
CentOS 7 默认无 PHP 7.4,必须启用第三方源。remi 是最稳定、更新最及时的选项(比 webtatic 更活跃),且明确支持 PHP 7.4 到 EOL。
在 Vagrantfile 的 config.vm.provision "shell" 中写:
config.vm.provision "shell", inline: <p>⚠️ 容易踩的坑: </p>
- 忘记
yum-config-manager——它来自yum-utils,必须先yum install -y yum-utils - 直接
yum install php→ 装的是 PHP 5.4(CentOS 7 默认) - 用
php74-php*包但没建软链接 →php -v仍显示 5.4
Ubuntu 20.04 怎么装 PHP 7.4:ondrej PPA 是唯一选择
Ubuntu 20.04 默认源只提供 PHP 7.4,但需手动添加维护者仓库:
config.vm.provision "shell", inline: <p>⚠️ 注意点: </p>
-
add-apt-repository在最小化安装的 Ubuntu 上可能不存在,必须先装software-properties-common - 不加
ppa:ondrej/php就运行apt install php→ Ubuntu 20.04 会装 PHP 7.4,但后续apt upgrade可能悄悄升级到 8.0(如果 PPA 未锁定) -
update-alternatives是关键:否则php -v可能仍指向旧版本或报错“no alternative”
验证与收尾:别跳过这三步
Vagrant 启动后,进虚拟机手动确认:
- 运行
php -v,输出第一行必须含7.4.(不是 7.4.33 就行,版本号次要) - 运行
php -m | grep mysqli,确保 MySQL 扩展已加载(很多 provisioner 忘配php74-php-mysqlnd或php7.4-mysql) - 若用 Nginx + PHP-FPM,检查
systemctl is-active php74-php-fpm(CentOS)或systemctl is-active php7.4-fpm(Ubuntu)是否为active
最后提醒:PHP 7.4 已无安全更新,仅限遗留项目维护。如果新项目还强行锁死 7.4,迟早要面对 OpenSSL 3.0 兼容性、Composer 2.5+ 报错等隐性问题——这些不会在 vagrant up 阶段暴露,但会在某次 composer install 时突然崩。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











