
setup-php 解决的是 PHP 项目跑持续集成时最烦的那段重复劳动:每次换一个 PHP 版本、加一个扩展、调一个 ini 参数,都要在工作流里再写一遍安装脚本。它把这些事收进 GitHub Actions 的一个步骤里,一个步骤配好 PHP 版本、扩展、ini、覆盖率驱动和 Composer 工具链,矩阵构建一次写好就能在多个版本和系统上反复跑。本文讲清它适合哪种流水线、哪几项配置最值得先调,以及它明确管不了的事。
setup-php 软件信息一览
| 项目 | 说明 |
|---|---|
| 软件名称 | setup-php(GitHub Actions 里的 PHP 环境配置工具) |
| 主要用途 | 在持续集成工作流中准备 PHP 运行环境 |
| 运行环境 | GitHub Actions 托管 Runner 与自托管 Runner,覆盖 Linux、Windows、macOS |
| 实现语言 | TypeScript,见仓库 README |
| 版本说明 | 无固定发行版概念,引用时按仓库最新标签核对 |
| 仓库人气 | 截至采集时约 3.3k Star |
| 项目主页 | GitHub 开源仓库 |
setup-php 选型结论:三种用法先定一种
结论先行:只跑单版本单测的新手直接用第一种;要同时验证多个 PHP 版本和操作系统的团队用第二种;要收覆盖率或跑静态分析的再叠加第三种。三种用法不是递进关系,而是按需取用,贪多只会让工作流难调试。
| 用法 | 做法 | 适合谁 |
|---|---|---|
| 单版本单测(推荐起步) | 指定一个 PHP 版本,装上项目必需的扩展就跑测试 | 第一次给 PHP 项目接持续集成的人 |
| 多版本矩阵 | 用矩阵同时跑多个 PHP 版本与多个操作系统 | 要保证兼容范围的开源项目与类库作者 |
| 覆盖率与质检叠加 | 在前两种基础上选覆盖率驱动、接 Composer 工具与静态分析 | 已有测试套件、想把质量门禁收进流水线的人 |
setup-php 安装与上手步骤
- 在仓库里新建工作流文件:路径一般是
.github/workflows/ci.yml,触发条件按项目习惯写 push 或 pull_request。 - 关键卡点:加 setup-php 步骤:参考写法如下,版本号以仓库最新标签为准:
- name: 配置 PHP 环境 uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: mbstring, intl, pdo_mysql ini-values: memory_limit=512M, max_execution_time=300 coverage: xdebug - 关键卡点:扩展名先对着 composer.json 抄:项目用到的扩展列不全,测试会在半路报缺扩展;列多了则每次构建多花时间。先按 composer.json 的 ext-* 要求列,再补测试里实际用到的。
- 关键卡点:跑一次完整验证:先让工作流跑通 composer install 与 phpunit,确认扩展、ini 与覆盖率三项都按预期生效,再考虑加矩阵。
- 再扩矩阵:单版本跑稳之后,再把 php-version 与操作系统做成矩阵,一次改动只扩一维,出问题好定位。
setup-php 装完必改的五项配置
- 锁定 PHP 版本(入口:步骤的 with 项 → php-version):写死具体版本号,别写浮动范围。体感差别:上游发新版本时你的流水线不会莫名其妙变行为,复现失败构建时能对上同一环境。
- 按需列扩展(入口:with 项 → extensions):只列项目真正用的扩展。体感差别:扩展装得越少,步骤耗时越短;缺一个扩展,构建失败的报错往往不在扩展本身,而在某个看似无关的测试用例里。
- 调大内存与超时(入口:with 项 → ini-values):把 memory_limit 与 max_execution_time 按测试规模抬上去。体感差别:大项目默认内存上限很容易在覆盖率阶段被顶爆,报错信息还不直白,先调能少踩一次。
- 选对覆盖率驱动(入口:with 项 → coverage):xdebug、pcov、none 三者按需选,跑单测不收覆盖率就填 none。体感差别:xdebug 覆盖率高但最慢,pcov 轻量但只做覆盖率,none 最快;选错等于白白多等几分钟。
- 配好缓存(入口:工作流的缓存步骤):给扩展缓存与 Composer 依赖缓存配好 key。体感差别:缓存命中时构建能省下一大半时间,key 写得太粗则依赖更新后还用旧缓存,排错先查缓存。
setup-php 注意事项与常见问题
- 它只管持续集成里的环境准备:不能替代生产服务器的 PHP 部署,也不负责本地开发环境的安装,本地开发仍需自己装 PHP。
- 自托管 Runner 要自备系统依赖:托管 Runner 自带常用依赖,自托管机器缺什么得自己先装好,否则步骤会在装扩展那一步失败。
- 可用组合受 Runner 平台约束:PHP 版本、扩展、工具与操作系统的组合不是任意搭配都行,上线前按目标矩阵逐个验证,别只在一种组合上测完就全量铺开。
- 引用方式要固定并定期复查:工作流里引用的标签要固定,升级前先在分支上验证扩展、覆盖率驱动与 Composer 认证行为,别直接在主分支上换。
- 工具链以仓库说明为准:除 Composer 外的其他开发与质检工具支持情况,据仓库 README 介绍有清单,动手前先核对清单里有没有你想用的那一个。
setup-php 适合谁:横向对比一句话
- 适合:PHP 项目已经或准备用 GitHub Actions 做持续集成,需要在多版本、多系统上跑测试与质检的团队。
- 不适合:用其他持续集成平台的团队,适合用对应平台的原生方案;环境已经用容器镜像固化的项目,适合直接跑镜像;只需要本地开发环境的个人用户。
- 一句话选型:GitHub Actions 里跑 PHP 测试选 setup-php;容器化环境优先用镜像;其他平台看平台自带的环境配置能力。
开源地址
GitHub 国内访问较慢,如打不开可多刷新几次
推广

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
版权与使用提示
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›
文章推荐
标签推荐
正文完







