我想使用 .sh 脚本来部署我的应用程序。该脚本位于我的主服务器(Ubuntu 15.10 服务器)上,标记为可执行文件。对这个脚本的访问是通过 ssh 完成的,使用本教程,我设置了 ssh 登录,它运行该脚本。所以基本上我只是调用ssh deployer@XXX.com someArguments它并使用someArguments作为参数运行我的脚本。用户的deployeruid=0,所以它基本上root(这将在未来改变,我设置它只是为了消除权限问题,直到它正常工作)。
这就是事情变得棘手的地方。脚本报告/usr/bin/env: php: No such file or directoryat 命令/bin/composer install(使用Composer)。我越看那个剧本,事情就越奇怪。在这一行之前,还有一个叫做/bin/composer self-updateand /bin/composer -V,它既能正确运行,又能显示正确的输出。
我检查了以下几件事:
/usr/bin/env php -v显示正确的 PHP 版本(与 相同/usr/bin/php -v)whereis php 显示 php: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cli 安装包和最新版本$PATH 包含 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich env 显示 /usr/bin/env我也尝试过以下事情:
bash deploy.sh在 root 下运行脚本(因为它与该用户相同) - 完美无误