GitHub Actions 中 PHP 环境需手动配置 Composer 和扩展:用 php-actions/composer@v6 安装指定版本,通过 shivammathur/setup-php@v2 显式声明 php-version 与 extensions(如 mbstring, xml, zip),并用 actions/cache@v3 缓存 vendor,key 包含 composer.lock hash,安装时加 --no-interaction --prefer-dist --optimize-autoloader 参数。

GitHub Actions 中 PHP 环境里 Composer 不是默认可用的
GitHub Actions 的 ubuntu-latest 默认不带 composer 命令,直接写 composer install 会报 Command not found。别指望系统预装,得自己拉或用官方 Action。
- 推荐用
php-actions/composer@v6—— 它自动匹配 PHP 版本、跳过全局安装、支持composer.json校验,比手动curl -sS https://getcomposer.org/installer | php更稳 - 如果项目必须用特定 Composer 版本(比如 v2.5.8),在 Action 参数里加
composer-version: '2.5.8',否则默认用最新稳定版 - 别在
run步骤里用sudo apt install composer:Ubuntu 上这个包老旧(常是 2.0.x),且可能和当前 PHP 扩展冲突(比如缺少ext-zip)
PHP 版本和扩展必须显式声明
GitHub Actions 的 setup-php Action 不会自动启用常用扩展,composer install 卡在 ext-mbstring 或 ext-xml 缺失是高频问题。
- 用
shivammathur/setup-php@v2时,extensions必须写全:比如 Laravel 项目至少要mbstring, xml, zip, pdo, pdo_mysql, curl -
php-version要和composer.json里的"php": "^8.1"对齐,否则composer install直接失败并提示Your requirements could not be resolved - 如果项目用了
ext-sodium或ext-redis,得额外加到extensions列表,不然测试阶段才爆错,CI 浪费时间
vendor 目录缓存不是开箱即用的
不手动配置缓存,每次 CI 都重装 vendor,PHP 项目平均多花 40–90 秒,且容易触发 GitHub 的速率限制(尤其私有包)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
actions/cache@v3缓存vendor,key 要包含composer.lock的 hash:composer-${{ hashFiles('**/composer.lock') }} - 务必在
composer install前加--no-interaction --prefer-dist --optimize-autoloader,否则缓存命中后仍可能因 dev-only 包或交互提示失败 - 如果项目有私有 Git 仓库依赖,记得在
composer install前配置GITHUB_TOKEN:用composer config github-oauth.github.com ${{ secrets.GITHUB_TOKEN }}
测试前要确认 autoload 已生成且无语法错误
composer install 成功不代表能跑测试——常见于 autoload-dev 配置错误或 PHP 语法问题导致 vendor/autoload.php 加载失败。
立即学习“PHP免费学习笔记(深入)”;
- 在
phpunit步骤前加一步:php -d display_errors=Off -d error_reporting=0 -l vendor/autoload.php,快速验证 autoloader 是否可解析 - 如果用
psr-4映射,确保路径末尾没多斜杠(如"App\": "src//"),Composer 不报错但 PSR-4 自动加载器会静默失效 - 运行
composer dump-autoload --optimize再测试,避免开发环境本地缓存干扰 CI 行为
composer.lock 是否提交——这三个点,改一次就能省掉一半 CI 报错排查时间。


















