2017-02-21 1 views
0

Nous sommes actuellement confrontés à un problème où runner bower update --allow-root via le composant Process de Symfony qui résulte en une erreur ou;Bower - ENOGIT git n'est pas installé ou pas dans le PATH en utilisant Symfony Process

bower jquery#* <3.0 * * * * * * * * ENOGIT git is not installed or not in the PATH

course git ou bower via le composant récupère la réponse attendue.

Il semble que le nœud/noeud ne trouve pas le chemin git. L'exécution du processus par l'intermédiaire d'follwoing Symphony

echo $PATH

résultats dans

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

intérieur est /usr/bin;

lrwxrwxrwx 1 root root   35 Feb 21 09:06 bower -> ../lib/node_modules/bower/bin/bower 
lrwxrwxrwx 1 root root   22 Jan 23 11:49 node -> /etc/alternatives/node 
-rwxr-xr-x 1 root root   25163808 Jan 6 00:12 nodejs 
lrwxrwxrwx 1 root root   38 Jan 6 00:11 npm -> ../lib/node_modules/npm/bin/npm-cli.js 
-rwxr-xr-x 1 root root   1862800 Mar 23 2016 git 

course which git via Process Symfony retourne /usr/bin/git

course which bower via Process Symfony retourne /usr/bin/bower

course which node via Process Symfony retourne /usr/bin/node

Trace de pile:

Error: git is not installed or not in the PATH 
    at createError (/usr/lib/node_modules/bower/lib/util/createError.js:4:15) 
    at GitHubResolver.GitResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitResolver.js:45:15) 
    at GitHubResolver.GitRemoteResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitRemoteResolver.js:10:17) 
    at new GitHubResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitHubResolver.js:13:23) 
    at /usr/lib/node_modules/bower/lib/core/resolverFactory.js:18:16 
From previous event: 
    at PackageRepository.fetch (/usr/lib/node_modules/bower/lib/core/PackageRepository.js:46:6) 
    at Manager._fetch (/usr/lib/node_modules/bower/lib/core/Manager.js:323:51) 
    at Array.forEach (native) 
    at Manager.resolve (/usr/lib/node_modules/bower/lib/core/Manager.js:116:23) 
    at Project._bootstrap (/usr/lib/node_modules/bower/lib/core/Project.js:559:6) 
    at /usr/lib/node_modules/bower/lib/core/Project.js:193:21 

Console trace: 
Error 
    at StandardRenderer.error (/usr/lib/node_modules/bower/lib/renderers/StandardRenderer.js:81:37) 
    at Logger.<anonymous> (/usr/lib/node_modules/bower/lib/bin/bower.js:110:26) 
    at emitOne (events.js:96:13) 
    at Logger.emit (events.js:188:7) 
    at Logger.emit (/usr/lib/node_modules/bower/lib/node_modules/bower-logger/lib/Logger.js:29:39) 
    at /usr/lib/node_modules/bower/lib/commands/index.js:48:20 
    at _rejected (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:844:24) 
    at /usr/lib/node_modules/bower/lib/node_modules/q/q.js:870:30 
    at Promise.when (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:1122:31) 
    at Promise.promise.promiseDispatch (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:788:41) 

Serveur:

NGINX 
1 GB 
30 GB Disk 
Ubuntu 16.04.1 x64 
Linux 4.4.0-62-generic x64 

a quelqu'un d'autre a couru dans ce problème ou pourrait suggérer d'autres tests pour le débogage.

concernant

EDIT

Ive débogués revenir à /usr/lib/node_modules/bower/lib/util/createError.js

var which = require('which'); 
var hasGit; 

// Check if git is installed 
try { 
    which.sync('git'); 
    hasGit = true; 
} catch (ex) { 
    hasGit = false; 
} 

EDIT 2

suivi jusqu'à un module de noeud which;

https://github.com/npm/node-which/blob/master/which.js#L21

laquelle la ligne process.env.PATH revient undefined.

Répondre

0
export PATH=$PATH:/usr/bin; bower update 

process.env.PATH revenait undefined à partir du module de noeud which;

https://github.com/npm/node-which/blob/master/which.js#L21

Ajout du préfixe PATH à la commande fixe cette question. Etant plus spécifique à mon problème, la classe Process de Symfony prend un troisième paramètre pour les variables d'environnement;

$process = new Process('php composer.phar update', $path, [ 'PATH' => '/usr/bin', 'HOME' => '/home/forge' ]);