2016-05-25 5 views
0

ich ein PHP-Skript bereit, dasgit ziehen nicht, wenn sie von Apache ausgeführt arbeiten, sondern arbeitet auf CLI

shell_exec("git pull"); 

läuft es angeblich jedes Mal ein Webhook für git Repo-Lauf sein gibt es Änderungen an der Fernbedienung gedrückt. Nach der Ausführung passiert nichts, ich bekomme eine leere Antwort.

Ich habe den Besitzer des Verzeichnisses in "Apache" geändert (Repo wurde als "Apache" geklont). Ich habe einen Schlüssel generiert und auf bitbucket hochgeladen. Es scheint richtig zu funktionieren, wenn ich

läuft funktioniert es perfekt. Keine Eingabeaufforderung.

wenn ich

shell_exec("whoami"); 

laufen bekomme ich "Apache".

Ist es möglich, dass PHP den Git-Pull blockiert? Wenn ich andere Git-Befehle (wie Git Status), bekomme ich die Antwort.

UPDATE

wenn ich

shell_exec("git pull 2>&1"); 

tun, sagt er

error: cannot open .git/FETCH_HEAD: Permission denied 

Ich bin verwirrt. Ich bin sicher, .git dirs und subdirs Besitzer Apache und es hat richtig priviliges zu gehen ...

UPDATE # 2

Ich betreibe

shell_exec("git --work-tree=/path/to/repo --git-dir=/path/to/repo/.git pull 2>&1"); 

und es sagt noch

error: cannot open /path/to/repo/.git/FETCH_HEAD: Permission denied 

nicht weg! /path/to/repo/.git/FETCH_HEAD ist für alle lesbar!

Ich bin gut verwirrt.

+0

Versuchen Sie dies http://stackoverflow.com/questions/13195814/trying-to-git-pull-with-error-cannot-open-git-fetch-head-permission-denied –

Antwort

0

Es gefunden!

Nachdem ich viele, viele Stunden damit verbracht habe, dieses Problem zu lösen, fand ich die Antwort.

SELinux war das Problem. Ein einfacher Befehl löste es

sudo setenforce 0 

alles funktioniert jetzt!

0

Der Ordner muss beschreibbar sein, auch weil das Ziehen Daten schreibt. Sie können den Besitzer in Apache ändern, wenn es sich um einen Website-Repo handelt (und Sie verwenden die Apache-Gruppe oder den Benutzer als Eigentümer des www-Stammverzeichnisses).

+0

danke Ivan, aber das war Das allererste was ich getan habe.Der Besitzer des gesamten Projektarbeitsbereichs ist Apache (er wurde von diesem Benutzer geklont), und ich habe sogar die Berechtigungen .git directory (chmod -R 0777 .git) auf 0777 geändert, und es steht immer noch Permission denied. – hopsey

+0

Versuchen Sie, den Repo in einen anderen Ordner zu kopieren und chmod es auf 0777 (der gesamte Repo-Ordner ist geschrieben), um es zu testen. Es kann zu Fehlkonfigurationen kommen und Ihre Skripte werden möglicherweise nicht unter demselben Benutzer wie der Ordnerbesitzer ausgeführt. –

+0

Hat das getan, 0777 für das ganze Repo ohne Glück, immer noch bekommen Erlaubnis verweigert :(Es muss ein Problem mit Git – hopsey

Verwandte Themen