Exécution de l'interpréteur de script à l'aide de php

J'ai un script shell deploy.sh qui a le contenu suivant:-

echo "0 Importing the code"
eval "git pull -u origin master"

echo "1 Backing up existing data in database.."
//-- other code follows here

Quand j'execute le script directement à l'aide du terminal, j'obtiens le résultat suivant:-

0 à Importer le code 
à distance: le Comptage d'objets: 5, fait. 
distance: la Compression des objets: 100% (2/2), c'est fait. 
distance: Total 3 (delta 1), réutilisé 0 (delta 0) 
Déballage des objets: 100% (3/3), c'est fait. 
De bitbucket.org:utilisateur/repo 
* la branche master -> FETCH_HEAD 
La mise à jour de db13xxx..6705xxx 
1 Sauvegarde des données existantes dans la base de données.. 

C'est correct. Cependant, j'ai écrit un script PHP avec qui je peux invole l'deploy.sh script sur http. Le contenu de cette page php comme suit:-

$output = `./deploy.sh`;
echo '<pre>', $output, '</pre>';

Quand j'ai appeler ce fichier php via le navigateur, le script shell est en fait appelée et j'obtiens le résultat suivant:-

0 à Importer le code 
1 Sauvegarde des données existantes dans la base de données.. 

Le problème est que le eval "git pull -u origin master" commande n'a pas exécuté et sa sortie n'est pas indiquée. Aucune idée de quel est le problème?

Est le eval nécessaire? Ne pourriez-vous exécuter echo '0'; git pull -u origin master; echo '1" etc.
après tu dit, j'ai essayé de supprimer les eval. Il s'exécute toujours lorsque invoquées directement, mais même résultat lorsqu'il est exécuté par page php.
Avez-vous essayé d'ajouter #!/bin/bash en haut du script?

OriginalL'auteur Sparky | 2013-02-25