Voglio usare lo script .sh per la distribuzione della mia app. Quello script è sul mio server di casa (Ubuntu 15.10 Server), contrassegnato come eseguibile. L'accesso a questo script avviene tramite ssh, utilizzando questo tutorial, ho impostato il login ssh, che esegue quello script. Quindi, fondamentalmente, ho appena chiamato ssh deployer@XXX.com someArguments
ed esegue il mio script con someArguments
parametri. L'utente deployer
ha uid = 0, quindi è fondamentalmente root
(questo verrà modificato in futuro, l'ho impostato solo per eliminare i problemi di autorizzazione fino a quando non funziona correttamente).
Ed ecco dove le cose si complicano. Lo script riporta /usr/bin/env: php: No such file or directory
a comando /bin/composer install
(usando Composer ). Le cose sono più strane più guardo su quella sceneggiatura. Prima di questa riga, viene anche chiamato /bin/composer self-update
e /bin/composer -V
, che viene eseguito correttamente e visualizza l'output corretto.
Ho verificato le seguenti cose:
/usr/bin/env php -v
mostra la versione corretta di PHP (uguale a/usr/bin/php -v
)whereis php
visualizzaphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gz
php5-cli
il pacchetto è installato e la versione più recente$PATH
contiene/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which env
visualizza/usr/bin/env
Ho anche provato le seguenti cose:
- eseguire lo script direttamente come
bash deploy.sh
sotto root (poiché è lo stesso di quell'utente) - funziona perfettamente senza errori - esecuzione diretta di comandi non riusciti - anche perfettamente senza errori
Quindi questo mi sembra un caso molto specifico, perché questo comando non funziona. Ho trascorso 12 ore a eseguire il debug e non ho idee qui.
PS: errore simile ( /usr/bin/env: node: No such file or directory
) si verifica quando è presente bower install
(utilizzando Bower ), ma non durante l'esecuzione npm install
(utilizzando NPM ).
sh deploy
ed bash deploy
entrambi danno gli stessi risultati
/usr/bin/env > environment.txt
sh deploy
invece dibash deploy
(forse un po 'di bashismo). Come hai controllato le " seguenti cose "? Consiglio di controllarli nello script, in modo da poter scoprire eventuali sostituzioni e risanamenti di envs.