You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Google Cloud Build未检测到Composer(Laravel11+PHP8.3部署问题)

Laravel 11 + PHP 8.3 部署App Engine时Cloud Build未触发Composer Install的解决方法

问题背景

将基于Laravel 11、PHP 8.3的应用通过GitHub Actions部署到App Engine标准环境时,应用成功上传至Google Cloud,但Cloud Build的检测阶段未加载google.php.composer-install和google.php.composer构建包,导致未执行composer install。对比此前Laravel 9、PHP 8.2的部署日志,正常情况下这两个构建包会被自动触发。

日志对比

  • Laravel 9 + PHP 8.2 正常检测日志:

    ===> DETECTING
    Timer: Detector started at 2024-05-27T00:01:25Z
    5 of 6 buildpacks participating
    google.php.runtime          0.0.2
    google.php.composer-install 0.0.1
    google.php.composer         0.9.1
    google.php.appengine        0.9.0
    google.utils.label-image    0.0.2
    Timer: Detector ran for 179.182403ms and ended at 2024-05-27T00:01:25Z
    
  • Laravel 11 + PHP 8.3 异常检测日志:

    ===> DETECTING
    Timer: Detector started at 2024-05-26T21:41:32Z
    3 of 6 buildpacks participating
    google.php.runtime       0.0.2
    google.php.appengine     0.9.0
    google.utils.label-image 0.0.2
    Timer: Detector ran for 175.726391ms and ended at 2024-05-26T21:41:32Z
    

尽管Laravel 11的public/index.php中确实引用了vendor/autoload.php,符合自动触发Composer的条件,但仍未生效。

解决方案

1. 确保Composer配置文件存在且被部署

首先检查项目根目录的composer.json和composer.lock是否存在,且未被.gitignore排除:

  • 查看.gitignore文件,确认没有错误排除composer.json、composer.lock的规则
  • 在部署流程的checkout步骤后,添加验证步骤确认文件存在:
    - name: 🧐 Verify Composer files exist
      run: ls -la composer.*
    

2. 显式指定Composer构建包

在App Engine的配置文件(.github/workflows/appengine/staging.yaml)中,添加buildpacks字段,强制加载Composer相关构建包:

runtime: php83
env: standard
service: staging
# 新增buildpacks配置
buildpacks:
  - gcr.io/gae-runtimes/php/php83/composer:0.9.1
  - gcr.io/gae-runtimes/php/php83/runtime:0.0.2
  - gcr.io/gae-runtimes/php/php83/appengine:0.9.0
# 原有handlers和env_variables配置保持不变
handlers:
  # ... 原有配置
env_variables:
  # ... 原有配置

3. 手动在部署前执行Composer Install

如果自动检测仍不生效,可在GitHub Actions的部署阶段手动安装PHP依赖:
在deploy_staging作业中,添加PHP环境配置和Composer安装步骤:

deploy_staging:
  name: 🦺 Deploy to staging (v2)
  runs-on: ubuntu-latest
  environment: staging
  needs: build
  permissions:
    id-token: write
    contents: read
  steps:
    - name: 💾 Get the latest code
      uses: actions/checkout@v4

    - name: 🛠️ Setup PHP 8.3
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.3'
        tools: composer:v2

    - name: 📦 Install PHP dependencies
      run: composer install --no-dev --optimize-autoloader

    - name: 📥 Download frontend
      uses: actions/download-artifact@v4
      with:
        name: frontend
        path: public/build

    # 后续认证和部署步骤保持不变

4. 检查App Engine PHP 8.3的运行时配置

确认App Engine配置中的runtime字段为php83,且未使用自定义运行时或其他可能干扰构建包检测的配置。

验证步骤

  1. 推送代码触发GitHub Actions部署
  2. 查看Cloud Build的检测阶段日志,确认google.php.composer-install和google.php.composer构建包已加载
  3. 访问部署后的应用,确认PHP依赖正常加载

内容的提问来源于stack exchange,提问作者David Sojka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:37:04