本地Git部署Azure PHP应用执行git push azure main时报composer错误
故障根因
你遇到的Trying to access array offset on value of type nullComposer报错,是Azure App Service Windows环境默认的PHP runtime版本、Composer配置与你本地开发环境不匹配导致的,本地环境版本符合项目要求,但云端部署时调用的低版本PHP不兼容Composer依赖的语法规则。
解决步骤
按优先级从高到低尝试以下方案:
方案一:对齐云端PHP版本与本地环境
- 登录Azure门户,进入对应App Service实例的「配置」-「常规设置」页,将PHP版本修改为和你本地开发完全一致的版本,保存配置后等待实例重启。
- 进入「配置」-「应用程序设置」页,添加以下2条配置项:
- 键:
COMPOSER_MEMORY_LIMIT,值:-1 - 键:
COMPOSER_ALLOW_SUPERUSER,值:1
- 键:
- 保存配置后,进入「部署中心」,找到最近一次失败的部署记录,点击「重新部署」验证是否恢复。
方案二:自定义部署规则跳过自动Composer安装(生产环境推荐)
如果方案一无效,避免部署时依赖安装的不可控风险,直接提交本地安装完成的依赖包到部署仓库:
- 在项目根目录添加
.deployment文件,写入以下内容:
[config] SCM_DO_BUILD_DURING_DEPLOYMENT = false
- 本地执行
composer install --no-dev优化生产环境依赖包 - 将
.deployment文件、vendor目录一并提交到Git仓库,重新执行git push azure main即可
方案三:适配Composer配置
如果不想提交vendor目录,修改项目根目录的composer.json文件:
- 检查
config节点下的platform配置,将PHP版本号修改为你在Azure上设置的PHP版本一致 - 删除
composer.lock文件后本地重新执行composer install生成新的lock文件,提交后重新触发部署即可
内容的提问来源于stack exchange,提问作者Gradiyanto Sanjaya
相关产品推荐
相关产品推荐

