GIT, HACER UN PULL DESDE UN PHP SCRIPT CON LA INTRUCCION shell_exec ?

GIT, HACER UN PULL DESDE UN PHP SCRIPT CON LA INTRUCCION shell_exec
Yo intenté se actualiza un repositorio alojado en github y después actualizar desde github hacia mi servidor, pero los tutoriales que vi no especificaba que pudiera llegar a dar algunos errores por ejemplo que los permisos de la carpeta y del archivo php eran root y tenían que ser los permisos del usuario www porque el sheel no se ejecutaba correctamente con el root.
El código que yo utilizaba para intentar hacerlo el pull era el siguiente.
<?php


define(‘PRIVATE_KEY’, ‘XXXXXXXXXXXXXXXXxxx’);


if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’    
       && $_REQUEST[‘thing’] === PRIVATE_KEY)
{    
   echo shell_exec(“git pull”);
}
Pero desgraciadamente no era tan fácil paseo un buen rato o tratando de arreglar esto hasta que al fin un control.


COSAS QUE NO HABÍA TOMADO EN CUENTA
El tipo de usuario que estaba intentando ejecutar git pull era el usuario del apache (llamémosle apache_user) está usuario no reconocían la instrucción git porque no estaba en su path.
Así que uno al intentar ejecutar la destrucción exect() de php simplemente no funcionaba y tampoco enviaba errores porque php  solamente reporta errores de tipo STDOUT y no de tipo STDERR. Y para esto se tuvo que habilitar agregando a la instrucción los caracteres 2>&1 al final del comando. Después de relanzar esto puede observar los errores que se generan al intentar ejecutar un git con la función exec().
Después de esto tuve que detectar donde estaba alojado git con la comando whitch git lo cual me arrojó /full/path/to/bin/git con lo que puede definir que la instrucción para poder ejecutar correctamente el git pull desde php que a la siguiente
echo shell_exec(“/full/path/to/bin/git pull 2>&1”);
Recuerde que por lo regular es preferable cambiar de usuario roo a usuario_apache. Incluso para ser el git init si ustedes ya crearon su repositorio con usuario root tienen que cambiar los permisos de esa carpeta al usuario apache de esta forma
echo shell_exec(“/full/path/to/bin/git pull 2>&1”);




Autor: Eugenio chaparro maya
Fuentes:
http://jondavidjohn.com/git-pull-from-a-php-script-not-so-simple/
http://vimeo.com/raymicha

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad