GitHub Action SSH部署IONOS主机Symfony项目报composer.phar错误
GitHub Action部署Symfony至IONOS主机composer命令报错修复
问题表现
- SSH连接IONOS主机正常,
git pull、数据库迁移命令可成功执行 - 完成Composer环境配置后,CI流程执行composer相关命令返回错误:
Could not open input file: composer.phar - 原有工作流配置:
name: CD on: push: branches: [ develop ] jobs: deploy: runs-on: ubuntu-latest steps: - name: SSH and Deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.APP_HOST }} username: ${{ secrets.APP_USER }} password: ${{ secrets.APP_PASS }} port: 22 script: | cd /homepages/14/d800745077/htdocs/clickandbuilds/dashJob git pull /usr/bin/php8.0-cli composer.phar i /usr/bin/php8.0-cli bin/console d:m:m -n
故障原因
非交互式SSH执行远程命令时,不会默认加载用户目录下的.bashrc、.profile等环境配置文件;且执行命令前已切换到项目目录,直接调用相对路径的composer.phar时,系统无法在当前项目目录下找到对应文件,触发报错。
修复方案
优先使用绝对路径指定composer.phar位置,无需额外加载环境配置,稳定性更高:
- 先手动SSH登录IONOS主机,执行
find ~ -name "composer.phar"获取composer.phar的实际存放路径,IONOS默认安装路径通常为用户根目录~/composer.phar - 修改工作流脚本中的composer执行命令,替换为绝对路径,同时加上生产环境推荐参数避免流程卡住:
script: | cd /homepages/14/d800745077/htdocs/clickandbuilds/dashJob git pull # 替换为你查到的composer.phar实际绝对路径 /usr/bin/php8.0-cli ~/composer.phar install --no-dev --optimize-autoloader -n /usr/bin/php8.0-cli bin/console d:m:m -n
如果composer.phar确实存放在项目目录下,执行命令前先确认文件权限:
- 手动SSH到项目目录执行
ls -l composer.phar,若没有执行权限,执行chmod +x composer.phar添加权限 - 若仍无法识别,可在脚本开头加
source ~/.bashrc显式加载用户环境配置后再执行后续命令
注意:部署脚本中所有需要交互的命令都要加
-n参数启用非交互模式,避免CI流程因等待输入挂起。
内容的提问来源于stack exchange,提问作者Clément Pageaux
相关产品推荐
相关产品推荐

