2015-10-14 30 views
8

Mam git pull web hook z Github, na dwóch pilotach, GoDaddy [produkcja] i na Bluehost [inscenizacja]. To pytanie nie dotyczy tych firm jako takich, ale co może być przyczyną różnic w konfiguracjach. Mam ten skrypt, który mam setup jako post commit na github.com:Konfiguracja shell_exec dla git pull Godaddy vs Bluehost

<?php 
$output = shell_exec('git pull origin master'); 
echo "<pre>$output</pre>"; 
?> 

Kiedy popełnić na repo GitHub, pożarów hakowych i działa dobrze na Bluehost. Nic nie robi na GoDaddy.

Bluehost odpowiedź przeglądarka:

"already up to date". Pull command works, and the Bluehost repo is updated. 

GoDaddy odpowiedź przeglądarka:

<pre></pre> Pull command has not worked. Repo not updated. 

Kiedy uruchomić ten skrypt poprzez przeglądarkę:

<?php 
$output = shell_exec('ls'); 
echo "<pre>$output</pre>"; 
?> 

uzyskać katalogu właściwego 'ls' wyjście na obu serwerach.

Po przejściu przez SSH do katalogu mogę ręcznie wydać polecenie "git pull origin master" i działa ono na obu serwerach. Czy to oznacza po prostu, że GoDaddy pozwala PHP wydawać KILKA poleceń, ale nie innym? Czy mogę to jakoś naprawić? To nie może być prawdą, że nikt nie wprowadza się automatycznie do Godaddy!

+1

robi 'shell_exec' wykonuje coś w ogóle? jak 'echo' lub' ls'? – sobolevn

+0

hostowany przez Godaddy lub VPS? – Doon

Odpowiedz

8

To może być podobna do previous case gdzie:

GoDaddy Pomoc techniczna potwierdziła, że ​​php nie ma dostępu do poleceń git w ich dzielonego hostingu środowiska.
Powiedzieli, że do tego celu potrzebny będzie system VPS.

This comment potwierdza, że ​​ustawienia php (które można skonfigurować) są bardzo ograniczone na wspólnym serwerze.

Sprawdź w dziale pomocy GoDaddy, czy tak jest w przypadku konfiguracji.

+1

Dzięki VonC, myślę, że to jest odpowiedź. Ponieważ zapłaciłem 50 punktów za to pytanie, będę redagować i powiedzieć, że tylko szalona osoba skorzysta z GoDaddy'ego na hosting.Mam teraz do czynienia z tą firmą w około 10 różnych domenach, dla 10 różnych klientów. Nowa zasada: jeśli chcesz, aby Jim działał na Twojej stronie, MUSI zostać usunięty z GoDaddy. –

1

Miałem podobny problem, gdzie komenda ja pracuje:

$output = shell_exec('git pull origin master'); 

zwróci pusty ciąg, choć inne git polecenia nie. Ten problem został rozwiązany przez dodanie 2> & 1 do końca polecenia powłoki:

$output = shell_exec('git pull origin master 2>&1'); 

ten przekieruje wyjście stderr do stdout i odkryłem git rzucał błąd nie widziałem.

http://us3.php.net/manual/en/function.shell-exec.php#106250

http://www.tldp.org/LDP/abs/html/io-redirection.html