2015-10-14 1 views
8

У меня есть git pull web hook из Github, на двух пультах, GoDaddy [production] и на Bluehost [staging]. Этот вопрос касается не самих этих компаний, а то, что может быть причиной различий в настройках. У меня есть этот сценарий, который у меня есть настройки, пост фиксации крюк на github.com:Конфигурация shell_exec для git pull Godaddy vs Bluehost

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

Когда я совершаю на репо Github, крючок пожаров и отлично работает на Bluehost. Он ничего не делает на Годадди.

Bluehost ответ браузер:

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

Godaddy ответ браузер:

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

Когда я запускаю этот скрипт через браузер:

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

Я получаю каталог Надлежащий 'LS' вывода на обоих серверах.

Когда я вхожу в каталог SSH, я могу вручную выполнить команду «git pull origin master», и он работает на обоих серверах. Значит ли это просто означает, что Godaddy позволяет PHP выдавать НЕКОТОРЫЕ команды, но не другие? Могу ли я это исправить? Не может быть правды, что никто не будет автоматически развертываться в Godaddy!

+1

делает 'shell_exec' выполняет что-то вообще? как 'echo' или' ls'? – sobolevn

+0

общий хост у Godaddy или VPS? – Doon

ответ

8

Это может быть похоже на previous case где:

техподдержка Godaddy подтвердил, что PHP не имеет доступа к командам GIT в их общей среде хостинга.
Они сказали, что VPS потребуется для этого.

This comment подтверждает, что настройки php (которые вы можете настроить) очень ограничены на общем сервере.

Так что проверьте поддержку Godaddy, если это так для вашей установки.

+1

Спасибо VonC, я думаю, это ответ. Поскольку я заплатил 50 баллов за этот вопрос, я собираюсь пересмотреть и сказать, что только безумный человек будет использовать Godaddy для хостинга.Я теперь занимался этой компанией примерно в 10 разных доменах, для 10 разных клиентов. Новое правило: если вы хотите, чтобы Джим работал на вашем сайте, он ДОЛЖЕН быть снят с Godaddy. –

1

У меня была аналогичная проблема, когда команда, которую я бегала:

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

вернуть бы пустую строку, хотя другие Git команды не будет. Эта проблема была решена путем добавления 2> & 1 к концу команды оболочки:

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

Это позволит перенаправить вывод STDERR на STDOUT, и я обнаружил мерзавец бросает ошибку я не мог видеть.

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

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

Смежные вопросы