Speravo che qualcuno potesse aiutarti, ho una pagina PHP che usa shell_exec
per comprimere una directory ed eseguire git pull
per far cadere le recenti modifiche al repository.
$op = shell_exec("cd /home/user/git/$repo/$dir/; zip -r /home/user/archives/$dir.$datestamp.zip $dir; cd /home/user/git/$repo/$dir/; git pull");
Lo zip funziona bene. Se cambio git pull
ad esempio git log
o git status
– all'interno di shell_exec, anche questo funziona, e posso vedere il file di log.
Sembra che non piaccia il tiro del cazzo.
Ho visto un altro post simile a questo, ma non ero sicuro di come sia stato ottenuto >> Shell_exec con git pull?
Dalla tua descrizione nei commenti sembra che il problema è che il tuo utente apache
non può scrivere nel repository, che è chiaramente richiesto quando usi git pull
. Hai due linee di azione:
apache
possa scrivere su di esso Dovresti riflettere attentamente sulle implicazioni di sicurezza di entrambe le opzioni, ma la seconda opzione è probabilmente la più semplice. Se non hai già un gruppo simile, puoi crearlo con:
addgroup gitwriters
… e poi aggiungi te stesso e l'utente Apache a questo gruppo:
adduser [yourusername] gitwriters adduser apache gitwriters
Quindi è ansible seguire le istruzioni in un'altra domanda per modificare le autorizzazioni sul repository. Per reiterare quelli con alcune lievi variazioni:
# Recursively, set the group ownership of every file and directory of your repository: chgrp -R gitwriters /path/to/your/repo # Recursively, make every file and directory of your repository readable and writable # by the group: chmod -R g+rw /path/to/your/repo # Recursively, set the setgid of every directory in the repository. The setgid bit # on directories means that files created in the directory will have the same group # ownership as the directory. find /path/to/your/repo -type d -print0 | xargs -0 chmod g+s
Quindi spero che la tua git pull
dovrebbe funzionare.