OS - Ubuntu 14.04Wykonywanie poleceń git przez php przez http
Pracuję nad wdrożeniem za pomocą webhooków GIT dla niego.
Dodałem klucze do rozmieszczenia dla repozytorium git i teraz chcę wyzwolić komendę git pull origin master
, gdy nastąpi push z mojego lokalnego repo.
Jest to plik test.php
nazywam poprzez przeglądarkę:
<?php
//echo "THis is a test file on a test repo for testing the deploy functionality using github webhooks!!!!";
echo exec('whoami');
echo exec('sh -x /var/www/proj/test/git.sh');
?>
Jest to plik git.sh
shell:
#!/bin/bash
cd /var/www/proj-dir/test
git pull origin master
Gdy uruchomię to na terminalu używając php test.php
uzyskać poprawny wynik z oczekiwaniami :
ubuntu From github.com:repo/test
* branch master -> FETCH_HEAD
Already up-to-date.
ubuntu
dla whoami
, a następnie wyjście git pull
.
Teraz tutaj jest problem, gdy zgłoszę taką samą http://example.com/test.php
przez przeglądarkę to pokazuje użytkownikowi lub whoami
wyjście jako www-data
, który jest apache użytkownika, ale starałem aktualizowania uprawnienia pliku php do wykonania i zmianie użytkownikowi www-data
ale nie działał.
sprawdzone dzienniki apache i kiedy wykonać za pośrednictwem przeglądarki pojawia się błąd uprawnień
Please make sure you have the correct access rights and the repository exists. + cd /var/www/proj/deploy-test + git pull origin master
Weryfikacja klucza hosta nie powiodło się. fatal: Nie można odczytać z zdalnego repozytorium. Upewnij się, że masz właściwe prawa dostępu i istnieje repozytorium.
Jakie aktualizacje należy wprowadzić, aby plik działał na żądanie przeglądarki?
Jeśli muszę zaktualizować plik sudoers, jakie powinny być aktualizacje?
Aktualizacja
dodałem .ssh
klucze do var/www/
reż jako że jest domem dla apache użytkownika. Ciągle jednak uzyskuję także linię dla użytkownika danych sieci www, aby móc wykonać plik SH.
www-data ALL=(anthony) NOPASSWD: /var/www/mysite/vendor/tmd/auto-git-pull/scripts/git-pull.sh
referencyjny here Wciąż nie ma szczęścia
Aktualizacja uprawnienia dla folderu .git użytkownika www-data
sudo chown www-data:www-data /var/www/proj/test/.git
Musisz się upewnić, że to właściwy użytkownik prosi o pociągnięcie. Który użytkownik ma prawa do ściągnięcia z repo? Wygląda na to, że musisz być ubuntu. – nicoX
tak 'ubuntu', ale uważam, że dostęp do' http' użytkownika apache, który jest "www-dane" musi mieć pozwolenie na wykonanie skryptu.Po przejściu przez wiele postów dowiedziałem się, że muszę prawdopodobnie zaktualizować plik sudoers dla www-dane, aby mieć poprawne uprawnienia. Zastanów się, czy mój kierunek jest nieprawidłowy – KillABug
Nie można po prostu chmod skryptu, aby grupa/inny ma prawa wykonania. Wygląda na to, że twój skrypt jest wykonywany. – nicoX