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

GitLab CI流水线Cloudways服务器deploy阶段.gitconfig权限被拒绝报错求助

报错原因
  • 你的部署脚本中执行了git config --global命令,该命令需要写入当前SSH登录用户(即$APP_USER)的家目录下的.gitconfig全局配置文件,报错的本质是$APP_USER对家目录没有写入权限,无法创建或修改该文件。
  • 你找不到对应文件是因为权限不足时,Git根本没有成功生成.gitconfig或者.gitconfig.lock文件,而非文件不存在导致的报错。
  • 少数情况下是此前部署异常中断,生成了隐藏的.gitconfig.lock文件,你默认未显示隐藏文件所以无法找到。
解决方案

你可以根据自己的使用场景选择以下任意一种方案:

  1. 移除重复的全局配置命令(优先推荐)
    全局Git用户名配置只需要设置一次就会永久生效,不需要每次部署都重复执行。直接将script段里的git config --global user.name "my-user-name"命令删除即可,修改后的script代码如下:
script:
    - ssh -o StrictHostKeyChecking=no $APP_USER@$APP_HOST "cd public_html/ && git pull origin main && composer dump-autoload && php bin/console d:m:m -n"
  1. 将全局配置改为仓库局部配置
    如果确实需要每次部署都确认用户配置,可以把--global参数改为--local,配置只会写入当前仓库的.git/config文件,不需要操作家目录,一般应用用户对仓库目录都有读写权限:
script:
    - ssh -o StrictHostKeyChecking=no $APP_USER@$APP_HOST "cd public_html/ && git config --local user.name 'my-user-name' && git pull origin main && composer dump-autoload && php bin/console d:m:m -n"

注意:你原命令中的引号存在嵌套冲突,内层的用户名引号要改为单引号避免解析错误。

  1. 修复家目录权限
    如果需要保留全局配置的设置,手动SSH登录Cloudways服务器,执行以下命令修复家目录的所有者权限(替换路径为你自己的应用家目录):
chown -R $APP_USER:$APP_USER /home/123456.cloudwaysapps.com/xxxxxxx/

如果存在残留的.gitconfig.lock文件,执行以下命令删除即可:

rm -f /home/123456.cloudwaysapps.com/xxxxxxx/.gitconfig.lock

内容的提问来源于stack exchange,提问作者Stéphane Ripa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:01