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

Github Actions部署Laravel至GoDaddy遇TERM环境变量错误求助

解决Github Actions部署Laravel到GoDaddy时drone-scp的TERM报错问题

问题根源

报错tput: No value for $TERM and no -T specified是因为appleboy/scp-action依赖的drone-scp在远程GoDaddy服务器执行操作时,远程shell环境未设置TERM环境变量,导致调用tput命令失败。你之前在Github Actions runner中设置TERM的操作只作用于本地runner环境,无法影响远程服务器的shell环境,所以无效。

可行解决方法

方法一:通过scp-action的envs参数传递TERM到远程

修改你的deploy.yml中Deploy to GoDaddy步骤,添加envs字段将TERM变量注入远程环境:

- name: Deploy to GoDaddy
  uses: appleboy/scp-action@master
  with:
    host: ${{ secrets.GODADDY_SSH_HOST }}
    username: ${{ secrets.GODADDY_SSH_USERNAME }}
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    port: 22
    source: "."
    target: "~/public_html"
    envs: TERM=xterm

方法二:在远程GoDaddy服务器永久设置TERM

手动SSH登录到你的GoDaddy服务器,修改shell配置文件,永久添加TERM变量:

# 将TERM设置写入bashrc
echo 'export TERM=xterm' >> ~/.bashrc
# 立即生效配置
source ~/.bashrc

之后所有SSH连接都会自动加载这个环境变量,解决后续部署的TERM问题。

方法三:替换为其他无TERM依赖的SCP部署Action

如果上述方法仍无效,可以更换部署工具,比如使用wlixcc/SCP-Deploy-Action替代appleboy/scp-action,该工具不会依赖远程TERM环境:

- name: Deploy to GoDaddy
  uses: wlixcc/SCP-Deploy-Action@v1.4.0
  with:
    src: "."
    dest: "${{ secrets.GODADDY_SSH_USERNAME }}@${{ secrets.GODADDY_SSH_HOST }}:~/public_html"
    private_key: ${{ secrets.SSH_PRIVATE_KEY }}
    port: 22

内容的提问来源于stack exchange,提问作者Cristy Marjie Braga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:58:16