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

Github Action部署失败:PHP版本兼容与Git仓库不存在问题求助

解决Laravel部署中Composer版本依赖与Deployer升级后的Git仓库问题

一、Composer PHP版本依赖报错的处理

即使未修改composer.json或执行composer update,突然出现版本依赖报错,大概率是以下原因:

  • 部署流程中composer install触发了依赖包版本的重新解析(比如composer.lock文件被意外更新、镜像源同步了依赖包的新版本约束)。
  • platform-check: false仅跳过本地PHP版本校验,若服务器PHP版本不满足依赖包的硬约束,Composer仍会报错。

解决建议:

  1. 在本地使用≥7.3的PHP版本执行composer update --lock,更新composer.lock文件,锁定依赖包到当前PHP兼容的版本范围,再提交该文件到仓库。
  2. 部署时执行composer install --no-dev --optimize-autoloader,严格按照composer.lock安装依赖,避免拉取新的版本。
  3. 服务器升级PHP到符合要求的版本(你已完成这步,这是根本解决方案)。

二、Deployer 7.0升级后Git仓库不存在(退出码128)的修复

Deployer 7.x与6.x的代码拉取逻辑差异较大,该错误通常和缓存目录权限、配置变更或Git认证有关:

  1. 手动创建缓存目录并配置权限
    Deployer 7默认会在deploy_path/.dep/repo缓存Git仓库,若目录不存在或权限不足会报错:

    mkdir -p /var/www/dev/.dep/repo
    chown -R <部署用户>:<用户组> /var/www/dev/.dep # 替换为你的服务器部署用户,比如www-data
    chmod -R 755 /var/www/dev/.dep
    
  2. 检查并调整Deployer配置

    • 确认hosts配置中的deploy_path正确,且部署用户对该目录有读写权限。
    • 7.x中Git配置有变更,若使用远程拉取,需添加git_tty: true配置,避免交互式认证问题;同时确保repository地址是服务器可访问的(优先用SSH地址,避免HTTPS认证失败)。
    • 执行dep cleanup清除服务器上的旧部署缓存,避免残留配置干扰。
  3. 验证服务器Git认证权限
    退出码128常和Git认证失败相关,可在服务器上手动执行:

    git clone <你的仓库地址> /var/www/dev/.dep/repo
    

    测试是否能成功克隆,若失败需检查部署用户的SSH密钥是否已添加到Git仓库平台(GitHub/GitLab等)。

  4. 切换部署策略
    若不想使用本地缓存拉取的方式,可在Deployer配置中设置强制远程拉取:

    set('deployer:strategy', 'remote');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:45:47