raz pierwszy uruchomić test przed moim instancji serwera bitbucket uzyskać wszelkie wysyłania wiadomości o błędach na ekranie:
echo shell_exec("cd /website/root/htdocs && git status 2>&1");
ten wyrzucił błąd, że nie może znaleźć polecenia git stąd musiała zapewnić pełną ścieżkę do git na binarny:
'which git'
zwracane (zwany dalej YOU_FULL_GIT_BINARY_PATH_HERE)
/usr/local/git/bin/git
pełnej ścieżki np "/ usr/local/git/bin/git status" teraz ładnie ładuje polecenia git.
Nie pokonuje to hasła git wymaganego do użycia komendy "git pull" dla zestawu w git/config git user. Uruchamianie poniżej komendy w git repo:
git config credential.helper store
[polecenie] [1] poprosi o hasło i pozwala przechowywać je lokalnie niezaszyfrowane (chronione tylko przez system plików na przykład w /root/.git-credentials). Umożliwi to uruchomienie 'git pull' bez pytania o hasło. Alternatywnie (prawdopodobnie lepiej) jest generowanie kluczy ssh dla twojego serwera WWW, takich jak apache, a następnie dodawanie ich do konta użytkownika dedykowanego bitbucket lub kluczy repo.
Wszystkie moje foldery zostały ustawione przez apache być własnością użytkownika (Centos 6.8 Inne wersje mogą być www-data: www-data itp):
chown -R apache:apache YOUR_WEB_FODLER
nie trzeba używać brudną sztuczkę "chmod o + rw -R", aby uzyskać wszystkie działa.
'exec' powinien działać w porządku tak długo, jak skrypt PHP uprawnienia do aktualizacji repo. Spróbuj użyć 'system()' i zobacz, jaka jest zwracana wartość. – Prisoner
rozwiązany ... problem był związany z własnością .git, to nie był www-dane – rjv
Korzystanie z biblioteki takiej jak [php-git] (https://github.com/libgit2/php-git) –