2012-02-21 20 views
10

Stavo provando il Perfect Workflow, with Git, GitHub, and SSH, e ho tutto configurato, tranne l'esecuzione del comando git pull da php.Esecuzione di git pull da uno script php

quando corro exec('git pull') ottengo:

Impossibile creare la directory '/.ssh'. La verifica della chiave host non è riuscita. fatale: L'estremità remota riattaccato inaspettatamente

Se faccio funzionare nel terminale (come root) funziona bene, ma ho bisogno questo gancio di lavorare dalla post-ricezione URL (Github).

Se faccio exec('whoami') ottengo apache.

È un (dv) da mediatemple con CentOS.

+2

è necessario rendere l'utente del repository git uguale a quello in cui l'app Web è in esecuzione. –

+2

E a cosa serve la directory home dell'utente 'apache'? 'ssh' sta ottenendo la directory radice della macchina come directory home e non può scrivere lì come utente' apache'. ('root' ovviamente può, che è il motivo per cui funziona) –

+1

Grazie per la risposta ragazzi. Ben: Come posso farlo? Brian: non lo so. Non sono un ragazzo sys/admin. Sono in esecuzione su un mediatemple (dv) con CentOS – AFRC

risposta

8

Se volete apache (l'utente) per essere in grado di tirare da Git si dovrà creare una chiave SSH per apache, quindi aggiungere che ai tasti di sola lettura su github.

Il flusso è qualcosa di simile (tweak per le vostre esigenze)

usermod -s /bin/bash apache 
su apache 
cd ~ 
ssh-keygen # work through the keygen dance (added a dash) 

Upload (tilde qui si riferisce alla directory home di apache) ~/.ssh/id_rsa.pub per Github e dare accesso a qualsiasi apache repos ha bisogno di tirare da.

Quindi è possibile testare sul server di nuovo ing su' per Apache e l'esecuzione del git pull

su apache 
cd ~/working-copy 
git clone my-project 

Una volta che sta lavorando si dovrebbe essere in grado di eseguire un git tirare tramite PHP .

+0

Ciao quickshiftin. Grazie. Quando eseguo il comando 'chmod apache -s/bin/bash' ottengo: _chmod: impossibile accedere a' apache ': Nessun file o directory_ simile. Ci dispiace, ma sono davvero nuovo per questa cosa admin/unix del server. – AFRC

+1

Whoops, dovrebbe essere 'chmod -s/bin/bash apache'. Sta impostando la shell dell'utente apache su bash in modo da poter eseguire su apache e testare le operazioni git prima di passare a eseguirle tramite PHP; Lo cambierò nella mia risposta. – quickshiftin

+0

Ancora get chmod: impossibile accedere a 'apache ': Nessun file o directory tale – AFRC