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
相关产品推荐
相关产品推荐

