Categorías: Sin categoría

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:

Eugenio Chaparro

Compartir
Publicado por
Eugenio Chaparro

Entradas recientes

🟢Editar código de un módulo en Dolibarr [04]

🟢Editar código de un módulo en Dolibarr [04]

En este tutorial vamos editar el código de nuestro módulo personas para poder personalizar algunas…

2 meses hace
🟢Crear un sub_módulo en Dolibarr [03]

🟢Crear un sub_módulo en Dolibarr [03]

En este tutorial vamos a crear un sub módulo llamado seguridad que será muy parecido…

2 meses hace
🟢Modificar un módulo en Dolibarr [02]

🟢Modificar un módulo en Dolibarr [02]

En este tutorial aprenderemos a editar el objeto personas del modulo persona que creamos en…

2 meses hace
🟢Constructor de módulos en Dolibarr

🟢Constructor de módulos en Dolibarr

Como mencionamos anteriormente Dolibarr es un proyecto realizado sobre la base de una política clara:…

2 meses hace
🟢Tickets en Dolibarr [19]

🟢Tickets en Dolibarr [19]

Los ticket en dolibarr nos ayudan a comunicar inconveniente en nuestros productos y servicios dentro…

2 meses hace
🟢Agenda en Dolibarr [18]

🟢Agenda en Dolibarr [18]

Las agendas en dolibarr nos ayudan a ver las actividades realizadas en proceso y por…

2 meses hace