OS - Ubuntu 14.04Esecuzione di comandi git via php su http
Sto lavorando alla distribuzione utilizzando GIT webhook per esso.
Ho aggiunto le chiavi di implementazione a git repo e ora voglio attivare il comando git pull origin master
quando un push avviene dal mio repository locale.
Questo è il file test.php
io chiamo via browser:
<?php
//echo "THis is a test file on a test repo for testing the deploy functionality using github webhooks!!!!";
echo exec('whoami');
echo exec('sh -x /var/www/proj/test/git.sh');
?>
Questo è il file git.sh
shell:
#!/bin/bash
cd /var/www/proj-dir/test
git pull origin master
Quando ho eseguito questo sul terminale utilizzando php test.php
ottengo il risultato corretto come previsto :
ubuntu From github.com:repo/test
* branch master -> FETCH_HEAD
Already up-to-date.
ubuntu
per whoami
seguito dall'uscita git pull
.
Ora qui è il problema quando chiamo la stessa http://example.com/test.php
tramite il browser mostra all'utente o whoami
uscita come www-data
, che è utente apache, ma ho provato ad aggiornare i permessi del file php per eseguire e cambiando l'utente a www-data
ma non ha funzionato.
controllato i log di Apache e quando eseguo attraverso il browser ottengo un errore di autorizzazione
Please make sure you have the correct access rights and the repository exists. + cd /var/www/proj/deploy-test + git pull origin master
Host verifica della chiave non è riuscita. fatale: impossibile leggere dal repository remoto. Assicurati di disporre dei diritti di accesso corretti e del repository esistente.
Quali aggiornamenti devo fare per far funzionare il file tramite richiesta del browser?
Se devo aggiornare il file sudoers quali dovrebbero essere gli aggiornamenti?
Aggiornamento
ho aggiunto le chiavi .ssh
al var/www/
dir come quella è la sede per l'utente apache. Ma ottengo ancora il
git pull origin master
error: cannot open .git/FETCH_HEAD: Permission denied
Inoltre ho aggiunto una riga per l'utente www-data per poter eseguire il file sh.
www-data ALL=(anthony) NOPASSWD: /var/www/mysite/vendor/tmd/auto-git-pull/scripts/git-pull.sh
riferimento here Ancora nessuna fortuna
Aggiornato le autorizzazioni per la cartella .git per l'utente www-data
sudo chown www-data:www-data /var/www/proj/test/.git
È necessario assicurarsi che sia l'utente corretto che richiede il pull. Quale utente ha i diritti di pull dal repo? Sembra che tu debba essere ubuntu. – nicoX
sì 'ubuntu', ma credo che quando si accede a' http' l'utente apache che è 'www-data' deve avere il permesso di eseguire lo script.Dopo aver esaminato molti post ho appreso che probabilmente devo aggiornare il file sudoers per www-data per avere le autorizzazioni corrette. PLease corect se la mia direzione è sbagliata – KillABug
Non potresti semplicemente chmod lo script in modo che group/other abbia i diritti di esecuzione. E sembra che il tuo script sia stato eseguito. – nicoX