Ich möchte das .sh-Skript für die Bereitstellung meiner App verwenden. Dieses Skript befindet sich auf meinem Heimserver (Ubuntu 15.10 Server) und ist als ausführbar markiert. Der Zugriff auf dieses Skript erfolgt über ssh. Mit diesem Tutorial habe ich die ssh-Anmeldung eingerichtet, mit der dieses Skript ausgeführt wird. Im Grunde rufe ich einfach auf ssh deployer@XXX.com someArgumentsund es führt mein Skript mit someArgumentsals Parameter aus. Der Benutzer deployerhat uid = 0, also ist es im Grunde root(dies wird in Zukunft geändert, ich habe es nur eingestellt, um Berechtigungsprobleme zu beseitigen, bis es gut funktioniert).
Und hier wird es schwierig. Das Skript meldet /usr/bin/env: php: No such file or directoryauf Befehl /bin/composer install(mit Composer ). Die Dinge sind seltsamer, je mehr ich auf dieses Skript schaue. Vor dieser Zeile steht auch /bin/composer self-updateund /bin/composer -V, das korrekt ausgeführt wird und die korrekte Ausgabe anzeigt.
Ich habe folgende Dinge überprüft:
/usr/bin/env php -vzeigt die korrekte PHP-Version an (wie/usr/bin/php -v)whereis phpAnzeigenphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cliPaket ist installiert und neueste Version$PATHenthält/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich envAnzeigen/usr/bin/env
Ich habe auch folgende Dinge versucht:
- Das Skript direkt wie
bash deploy.shunter root ausführen (da es mit diesem Benutzer identisch ist) - funktioniert einwandfrei ohne Fehler - Fehlerhafte Befehle direkt ausführen - auch perfekt ohne Fehler
Dies scheint mir also ein sehr spezifischer Fall zu sein, warum dieser Befehl nicht funktioniert. Ich habe 12 Stunden mit dem Debuggen verbracht und habe hier keine Ideen mehr.
PS: Ein ähnlicher Fehler ( /usr/bin/env: node: No such file or directory) tritt auf, wenn bower install(mit Bower ), aber nicht beim Ausführen npm install(mit NPM ).
sh deployund bash deploybeide geben die gleichen Ergebnisse
/usr/bin/env > environment.txt

sh deploystattbash deploy(vielleicht etwas Bashismus). Wie haben Sie die " folgenden Dinge " überprüft ? Ich empfehle, sie im Skript zu überprüfen, damit Sie eventuelle Überschreibungen und Bereinigungen von Envs feststellen können.