я хочу использовать .sh-скрипт для развертывания моего приложения. Этот скрипт находится на моем домашнем сервере (Ubuntu 15.10 Server), помечен как исполняемый. Доступ к этому скрипту осуществляется через ssh, используя этой учебник, я установил ssh логин, который запускает этот скрипт. Так что в основном я просто звоню ssh deployer@XXX.com someArguments
и он запускает мой скрипт с someArguments
как параметры. Пользователь deployer
имеет uid=0, поэтому его в основном root
(это будет изменено в будущем, я установил его только для устранения разрешения проблемы, пока он не работает нормально).
и вот где все становится сложнее. Скрипт сообщает /usr/bin/env: php: No such file or directory
в команде /bin/composer install
(через Composer). Чем больше я смотрю на этот сценарий, тем больше странностей. Перед этой строкой также стоит /bin/composer self-update
и /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.gz
php5-cli
пакет установлен и самая новая версия$PATH
содержит/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which env
выводит/usr/bin/env
я также пробовал следующие вещи:
- запуск скрипта непосредственно как
bash deploy.sh
под root (так как он такой же, как этот пользователь) - отлично работает без ошибок - запуск неудачных команд напрямую-также отлично без ошибок
так что мне кажется, что это очень конкретный случай, почему эта команда не работает. Я провел 12 часов отладки и я из идей здесь.
П. С.: аналогичная ошибка (/usr/bin/env: node: No such file or directory
) возникает, когда есть bower install
(через Bower), но не при работе npm install
(через NPM).