Je souhaite utiliser le script .sh pour le déploiement de mon application. Ce script se trouve sur mon serveur domestique (serveur Ubuntu 15.10), marqué comme exécutable. L'accès à ce script se fait via ssh, en utilisant ce tutoriel, j'ai configuré la connexion ssh, qui exécute ce script. Donc, fondamentalement, je viens d'appeler ssh deployer@XXX.com someArgumentset il exécute mon script avec someArgumentscomme paramètres. L'utilisateur deployera uid = 0, donc c'est fondamentalement root(cela sera changé à l'avenir, je l'ai défini uniquement pour éliminer les problèmes d'autorisations jusqu'à ce qu'il fonctionne bien).
Et c'est là que les choses deviennent délicates. Le script rend compte /usr/bin/env: php: No such file or directoryà la commande /bin/composer install(à l'aide de Composer ). Les choses sont d'autant plus bizarres que je regarde ce script. Avant cette ligne, il est également appelé /bin/composer self-updateet /bin/composer -V, qui s'exécute correctement et affiche une sortie correcte.
J'ai vérifié les choses suivantes:
/usr/bin/env php -vaffiche la version PHP correcte (identique à/usr/bin/php -v)whereis phpaffichephp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-clile package est installé et la dernière version$PATHcontient/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich envaffiche/usr/bin/env
J'ai également essayé les choses suivantes:
- exécuter le script directement
bash deploy.shsous root (car il est le même que cet utilisateur) - fonctionne parfaitement sans erreurs - exécution directe de commandes défaillantes - également parfaitement sans erreurs
Donc cela me semble être un cas très spécifique, pourquoi cette commande ne fonctionne pas. J'ai passé 12 heures à le déboguer et je suis à court d'idées ici.
PS: une erreur similaire ( /usr/bin/env: node: No such file or directory) se produit lorsqu'il y a bower install(à l'aide de Bower ), mais pas lors de l'exécution npm install(à l'aide de NPM ).
sh deployet les bash deploydeux donnent les mêmes résultats
/usr/bin/env > environment.txt

sh deployplace debash deploy(peut-être un bashisme). Comment avez-vous vérifié les " choses suivantes "? Je recommande de les vérifier dans le script, afin que vous puissiez découvrir d'éventuels remplacements et désinfections d'envs.