GitHub Actions中Composer安装失败:PHP版本约束不匹配求助
解决GitHub Actions中PHP版本切换不生效的问题
我之前也碰到过类似的情况,问题出在你使用的php-actions/composer这个Action上——它是运行在独立容器里的,默认不会继承你通过shivammathur/setup-php配置好的主机PHP环境,所以才会一直用它自己默认的7.4版本,导致composer检测到版本不满足约束。
这里有两种可行的解决方案:
方案一:直接使用主机环境的Composer
放弃php-actions/composer,改用主机上已经配置好的PHP和Composer来执行安装命令,这样就能确保使用的是你指定的7.3版本:
修正后的工作流配置:
name: Run Tests on: pull_request: branches: - master jobs: build: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: [ubuntu-latest] php-versions: ['7.3'] steps: - uses: actions/checkout@v2 - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} # 可选:如果需要指定composer版本,可以加上这行 # composer-version: '2.x' - name: Install Composer dependencies run: composer install --prefer-dist --no-progress --no-suggest - uses: php-actions/phpunit@v8
方案二:给php-actions/composer指定PHP版本
如果你坚持要用php-actions/composer,可以直接给它传递php-version参数,让它使用和你matrix中一致的版本:
修正后的工作流配置:
name: Run Tests on: pull_request: branches: - master jobs: build: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: [ubuntu-latest] php-versions: ['7.3'] steps: - uses: actions/checkout@v2 - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} - uses: php-actions/composer@v2 with: php-version: ${{ matrix.php-versions }} - uses: php-actions/phpunit@v8
额外验证步骤(可选)
为了确认PHP版本确实切换成功,你可以在setup-php之后加一个步骤输出当前PHP版本:
- name: Verify PHP version run: php -v
这样就能直观看到当前环境使用的PHP版本是否符合预期,方便排查问题。
内容的提问来源于stack exchange,提问作者simonw16
相关产品推荐
相关产品推荐

