Ejecutando un 'git pull' desde EXEC en PHP

Estoy tratando de ejecutar una solicitud de extracción de git usando PHP exec en windows corriendo XAmpp. Al ejecutar el siguiente script con exec or system e intente acceder al archivo que la página nunca deja de cargar. Revisé los permisos de archivo del directorio y todos son 0777. Y en ejecución git status funciona bien No estoy seguro de cual es el problema.

<?php
ignore_user_abort(true);
set_time_limit(15);
exec('git pull origin master', $o);
echo implode("\n", $o);
?>

Actualice que no hay una contraseña en la cuenta:

C:\xampp\htdocs>git pull origin master
From github.com:************
 * branch            master     -> FETCH_HEAD
Already up-to-date.

C:\xampp\htdocs>

Corriendo desde la terminal obtengo:

C:\xampp\htdocs>php -f update.php
PHP Warning:  PHP Startup: ming: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC6
PHP    compiled with build ID=API20090626,TS,VC9
These options need to match
 in Unknown on line 0

Warning: PHP Startup: ming: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC6
PHP    compiled with build ID=API20090626,TS,VC9
These options need to match
 in Unknown on line 0
From github.com:*********
 * branch            master     -> FETCH_HEAD
Already up-to-date.
C:\xampp\htdocs>

preguntado el 21 de mayo de 12 a las 18:05

¿Git está esperando alguna otra entrada del usuario, como una contraseña? set_time_limit() no ayuda aquí, ya que solo es aplicable al tiempo de ejecución de PHP. -

No hay una contraseña también actualizó la publicación. -

Estás ejecutando el script PHP desde la terminal, ¿sí? ¿O lo estás ejecutando desde la web? Si desde la web, apuesto a que su configuración de git depende de las variables de su entorno, que son diferentes si se ejecuta desde un usuario diferente (el usuario del servidor web). -

Ejecútalo desde tu terminal. A ver si funciona ahí. -

Actualicé la publicación. No estoy seguro de cuáles son las 2 advertencias, pero se ejecuta y se completa en cuestión de segundos. -

1 Respuestas

En lugar de usar exec, que espera hasta que finalice el proceso, use passthru y asegúrese de deshabilitar el almacenamiento en búfer de salida. De esta manera verás inmediatamente cuál es el problema.

contestado el 25 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.