ich vor allem in Ihrer PHP-Datei einen Test gegen Ihre Server-Instanz läuft alle Fehlermeldungen Ausgabe auf dem Bildschirm zu bekommen, weil exec() -Familie von Funktionen einfach still und nur Bericht STDOUT scheitern und nicht STDERR:
echo shell_exec("cd /website/root/htdocs && git checkout . && git status 2>&1");
in meinem Fall war dies ein Fehler, dass es git Befehl wegen fehlender binärer Pfad für Apache Benutzer nicht gefunden finden konnte. Daher muss der Binärdatei von git ein vollständiger Pfad bereitgestellt werden. Es kann sie manuell erhalten werden durch Auffinden oder Laufen in der Schale:
/usr/local/git/bin/git
Ein vollständiger Pfad mit git Befehl z:
'which git'
es zurückgegeben (weitere YOU_FULL_GIT_BINARY_PATH_HERE genannt) '/ usr/local/git/bin/git status' führt jetzt git-Befehle gut aus.
Eine andere Sache ist, um sicherzustellen, dass der Benutzer Ihres Webservers über ausreichende Berechtigungen zum Lesen/Schreiben in Ihren Repo-Ordner/Dateien verfügt. Ich habe gesetzt Mine von Apache Benutzer gehört zu werden (Centos 6.8 andere Versionen könnten www sein: www oder www-data: www-data etc.):
chown -R apache:apache YOUR_WEB_OR_REPO_FODLER
Um alle neu hinzugefügten Dateien richtigen Berechtigungen erben, um sicherzustellen, run:
Die oben genannten sollten Ihr Skript jetzt Befehle ausführen. Obwohl es die git-Passwortaufforderung nicht überwindet, um den "git pull" -Befehl für einen git-Benutzer in der Datei YOUR_WEB_OR_REPO_FODLER/.git/config zu verwenden.Laufen unter Befehl in Repo:
git config credential.helper store
command wird nach einem Kennwort fragt und lassen Sie es lokal speichern. Bitte beachten Sie, dass Ihr gespeichertes Passwort unverschlüsselt und nur durch das Dateisystem, z. in /root/.git-berechtigungen. Dies ermöglicht es, "git pull" auszuführen, ohne nach einem Passwort zu fragen.
Es ist nicht ideal für meine vollautomatische Continuous Integration-Umgebung, die Test-VPS on demand bereitstellt, da sie das git user (definiert in Repos .git/config git) Passwort mindestens einmal manuell eingeben muss.
Seit meiner Umgebung immer auf Code aus der Ferne der Herkunft/Masterkopie laufen soll ich auch bin mit
/YOU_FULL_GIT_BINARY_PATH_HERE/git checkout .
vor ‚git pull‘ Aufruf alle lokalen Änderungen verloren gehen, um sicherzustellen, immer abwechselnd ein harten stattdessen zurückgesetzt tun mit :
/YOU_FULL_GIT_BINARY_PATH_HERE/git fetch origin
/YOU_FULL_GIT_BINARY_PATH_HERE/git reset --hard origin/master
Was ist shell_exec zurück? –
nichts. Kein Fehler @JonStirling –
Nichts? Wie es in 'null' zurückgibt? –