2016-07-13 4 views
0

mich verrückt einfacher PHP-Skript für Git-Pull-Fehler: kann nicht geöffnet werden .git/FETCH_HEAD: verweigert Erlaubnis, wenn PHP-Skript für Git-Pull-

<?php 
$output = shell_exec("cd /var/www/domain.tld/html/test/ && git pull 2>&1"); 
echo "<pre>$output</pre>"; 

benannt ist es git.php und gab ihm 755

die Ausgang war

error: cannot open .git/FETCH_HEAD: Permission denied 

aber wenn ich versuche, vom Terminal

$ git pull 
Already up-to-date. 

Ich habe die Verzeichnisse Eigentum, mein Benutzer "versierte" ist

drwxrwsr-x 4 savvy savvy  4096 Jul 13 05:40 test 

und die Dateien innerhalb

$ ls -la test/ 
total 20 
drwxrwsr-x 4 savvy savvy 4096 Jul 13 05:40 . 
drwxr-xr-x 7 savvy savvy 4096 Jul 13 05:38 .. 
drwxrwsr-x 8 savvy savvy 4096 Jul 13 05:41 .git 
-rw-rwSr-- 1 savvy savvy 19 Jul 13 05:39 test.php 

.git

$ ls -la .git/ 
total 60 
drwxrwsr-x 8 savvy savvy 4096 Jul 13 05:41 . 
drwxrwsr-x 4 savvy savvy 4096 Jul 13 05:40 .. 
drwxrwsr-x 2 savvy savvy 4096 Jul 13 05:39 branches 
-rw-rwSr-- 1 savvy savvy 268 Jul 13 05:39 config 
-rw-rwSr-- 1 savvy savvy 73 Jul 13 05:39 description 
-rw-rwSr-- 1 savvy savvy 97 Jul 13 05:41 FETCH_HEAD 
-rw-rwSr-- 1 savvy savvy 23 Jul 13 05:39 HEAD 
drwxrwsr-x 2 savvy savvy 4096 Jul 13 05:39 hooks 
-rw-rwSr-- 1 savvy savvy 104 Jul 13 05:41 index 
drwxrwsr-x 2 savvy savvy 4096 Jul 13 05:39 info 
drwxrwsr-x 3 savvy savvy 4096 Jul 13 05:39 logs 
drwxrwsr-x 4 savvy savvy 4096 Jul 13 05:39 objects 
-rw-rwSr-- 1 savvy savvy 41 Jul 13 05:40 ORIG_HEAD 
-rw-rwSr-- 1 savvy savvy 107 Jul 13 05:39 packed-refs 
drwxrwsr-x 5 savvy savvy 4096 Jul 13 05:39 refs 

~/.ssh

drwx------ 2 savvy savvy 4096 Jul 13 04:56 .ssh 

insi

de
$ ls -la .ssh/ 
total 36 
drwx------ 2 savvy savvy 4096 Jul 13 04:56 . 
drwxr-xr-x 4 savvy savvy 4096 Jul 12 08:34 .. 
-rw-r--r-- 1 savvy savvy 398 Jul 12 05:46 authorized_keys 
-rw-rw-r-- 1 savvy savvy 59 Jul 11 10:10 config 
-rw------- 1 savvy savvy 1679 Jul 11 07:44 id_rsa 
-rw-rw-r-- 1 savvy savvy 398 Jul 12 05:21 id_rsa.pub 
-rw-r--r-- 1 savvy savvy 1768 Jul 13 05:08 known_hosts 
+0

Wie laufen Sie Ihr PHP-Skript? Als welcher Benutzer? – xxfelixxx

+0

Aufruf von der URL: domain.tld/git.php und erstellt git.php mit savvy Benutzer – Savvy

+0

Die URL wird von einem Webserver, der als welcher Benutzer ausgeführt wird? Sie müssen möglicherweise den Benutzer des Webservers zu Ihrer Gruppe hinzufügen. – xxfelixxx

Antwort

1

ich dieses Problem lösen durch die folgende

1- Kopie /home/savvy/.ssh/var/www/

# cp -R /home/savvy/.ssh /var/www/ 

2- gab das Verzeichnis/var/www dirActory zu www-data Benutzer

# chown -R www-data:www-data /var/www/ 

3- Anmeldung als WWW-Daten, Benutzer

$ su 
Password: 
# su -s /bin/bash www-data 

4- Klon der Repo in meinem Verzeichnis /var/www/domain.tld/html/test/

5- Aufruf der git.php Datei i bereits/made domain.tld git.php
Ergebnis

From bitbucket.org:repo/test 
8e9f67c..185cd9e master  -> origin/master 
Updating 8e9f67c..185cd9e 
Fast-forward 
test.php | 1 + 
1 file changed, 1 insertion(+) 
+0

In meinem Setup habe ich ein Git-Repo mit Gruppenschreibzugriff, und die Lösung war, www-Daten zu dieser Gruppe hinzuzufügen: '' sudo gpasswd -a www-data mygitgroup''. Nach dem Neustart von '' apache2'' in '' systemctl'' würde das Aufrufen des PHP-Skripts nun erfolgreich von Git erfolgen. –

Verwandte Themen