La primera vez que corro una prueba en contra de mi instancia de servidor bitbucket para conseguir cualquier salida de mensajes de error en la pantalla:
echo shell_exec("cd /website/root/htdocs && git status 2>&1");
esta arrojó un error que no se podía encontrar comando git por lo tanto, tenían que proporcionar una ruta completa de git binaria:
'which git'
Obtenidos (más llamado YOU_FULL_GIT_BINARY_PATH_HERE):
/usr/local/git/bin/git
una ruta completa por ejemplo, '/ usr/local/git/bin/git status' ahora ejecuta los comandos de git muy bien.
Esto no supera la contraseña de git requerida para usar el comando 'git pull' para un conjunto en el usuario de .git/config git. Correr por debajo de mando en repositorio git:
git config credential.helper store
[comando] [1] le pedirá la contraseña y permiten almacenar de forma local sin cifrar (protegido únicamente por el sistema de archivos, por ejemplo, en /root/.git-credentials). Esto permitirá ejecutar 'git pull' sin pedir una contraseña. Alternativamente (probablemente mejor) es generar claves ssh para su servidor web, como apached, y luego agregarlas a su cuenta dedicada de bitbucket o claves de repositorio.
Todos mis carpetas se han establecido a ser propiedad de usuario apache (Centos 6.8 otras versiones podrían ser www-data: www-data, etc.):
chown -R apache:apache YOUR_WEB_FODLER
que no tenía que usar el truco sucio 'chmod o + rw -R' para que todo funcione.
'exec' debería funcionar bien, siempre y cuando la secuencia de comandos PHP tiene permisos para actualizar su repositorio. Pruebe usar 'system()' y vea cuál es el valor de retorno. – Prisoner
resuelto ... problema con la propiedad de .git, no fue www-data – rjv
Usando una biblioteca como [php-git] (https://github.com/libgit2/php-git) –