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:

Comentarios

Facebook Like

Entri Populer

hackear wifi con kali linux 馃摗

Instalar Netbeans 10 en Windows 10

Instalar netbeans 10 en ubuntu 18.04