La secuencia de commands de bash de Github no tira

Tengo una count de github configurada en mi server EC2 sin problemas. Cuando bash ejecutar un script bash para 'git pull', no lo hago. Haré un 'estado de git' y muchos otros commands. Aquí está mi file sh

cd /var/www/html/TDS/; ls -la; type git; git status; git remote -v; git pull origin master; echo "hello world"; 

Todas las líneas funcionan excepto el git pull. He intentado con Git Pull, Git Pull Origin Master, Git fetch, Git fetch Origin Master. He descartado todas las posibilidades, como los problemas de permissions y privilegios.

Este file sh se ejecuta al presionar una página PHP, la página PHP se ve así

 <?php $output = shell_exec('/bin/sh /var/www/html/TDS/git.sh'); print_r("<pre>$output</pre>"); ?> 

Muy simple y funciona less la request de extracción. Cualquier ayuda sería increíble, estoy tan cerca de hacer que esto funcione.

Para que un git pull funcione, el usuario que lo ejecuta debe tener permissions de escritura para el índice de git repo (en .git/ ). Asegúrese de que el usuario bajo el cual se ejecuta el script (¿Apache?) Tenga esos derechos.

… ¿PHP (www-data) tiene permissions? ¿Es el dueño del file?

¿Es esto una URL ssh para el repository de origen? ¿Tiene ssh-agent ejecutándose cuando lo hace manualmente? ¿Ha proporcionado acceso al agente ssh al script de shell (pista, las respuestas son Sí, sí, no, probablemente).

Así que hemos determinado que es el acceso ssh el problema. A continuación, tiene dos opciones: get las cnetworkingenciales de ssh-agent en el process de php y permitir que el script php acceda a las cnetworkingenciales de ssh sin necesidad de una contraseña. Ambos son problemáticos de una forma u otra.

Para get las cnetworkingenciales de Assh-Agent en el process de php, copie la variable de entorno $ SSH_AUTH_SOCK de un intérprete de commands en su script php / shell SSH_AUTH_SOCK=/tmp/ssh-wScioBA10361/agent.10361 git pull . Luego, suponiendo que la secuencia de commands php tiene suficientes privilegios para acceder a ese file, git pull funcionará. Esto es problemático porque necesita ingresar al sistema para get el calcetín de authentication, cambiar el progtwig para usar el nuevo zócalo (o escribir un progtwig para encontrar el zócalo actual) y dejar todo en ejecución. Cierre la session, reinicie, etc. y perderá la funcionalidad de git pull.

La otra opción es crear cnetworkingenciales ssh para el usuario de php / shell que ejecuta git pull . Busque el directory de inicio, cree .ssh y ssh-key keys nuevas para ese usuario. Puede configurar la key privada para que no tenga una contraseña, de modo que cualquier persona que pueda acceder a este file (¡riesgo de security!) Pueda usar ssh con esas cnetworkingenciales. Agregue la key pública a las keys autorizadas de la count que tiene acceso al repository git (gitolite le permite restringir qué privilegios podría tener esa count).