primo luogo ho eseguito un test contro la mia istanza del server bitbucket per ottenere qualsiasi uscita messaggi di errore sullo schermo:
echo shell_exec("cd /website/root/htdocs && git status 2>&1");
questo ha gettato un errore che esso comando git non riusciva a trovare, quindi, ha dovuto fornire un percorso completo git di binario:
'which git'
restituito (ulteriormente chiamato YOU_FULL_GIT_BINARY_PATH_HERE):
/usr/local/git/bin/git
Un percorso completo es '/ usr/local/git/bin/git status' ora esegue graziosamente i comandi git.
Questo non consente di superare la password git richiesta per utilizzare il comando 'git pull' per un set in utente .git/config git. L'esecuzione di sotto comando git repo:
git config credential.helper store
[comando] [1] chiederà la password e permetterà di memorizzare localmente in chiaro (protetto solo da file system esempio in /root/.git-credentials). Ciò consentirà di eseguire 'git pull' senza richiedere la password. In alternativa (probabilmente meglio) è quello di generare le chiavi ssh per il tuo server web come ad esempio aggiunto e poi aggiungerle al tuo account utente dedicato bitbucket o chiavi repo.
Tutte le mie cartelle sono stati impostati per essere di proprietà dell'utente apache (CentOS 6.8 altre versioni potrebbero essere www-data: www-data, ecc):
chown -R apache:apache YOUR_WEB_FODLER
Io non hanno dovuta usare il trucco sporco 'chmod o + rw -R' per funzionare.
fonte
2017-04-30 14:50:21
'exec' dovrebbe funzionare bene finché lo script PHP ha autorizzazioni per aggiornare il repository. Prova a usare 'system()' e vedi qual è il valore di ritorno. – Prisoner
risolto ... il problema era con la proprietà di .git, non era www-data – rjv
Uso di una libreria come [php-git] (https://github.com/libgit2/php-git) –