У меня есть сценарий оболочки Sync.sh
на сервере CentOS7, который выполняет git checkout
, а затем git pull
.Каждая из этих команд использует параметр -C <path>
, чтобы скрипт мог жить где угодно.Это все работает нормально, когда вы вошли в систему через SSH (PuTTY) и запустили скрипт из командной строки ./Sync.sh
Однако, когда я запустил это через скрипт PHP, он не работает:
$CommandOutput = shell_exec( "./Sync.sh" );
Я добавил git --version
к Sync.sh
и обнаружил, что PHP использует git версии 1.8.3, которая не включает опцию -C <path>
(она была добавлена в 1.8.5, если я правильно помню).Однако SSH git --version
возвращает 2.9.5, что объясняет, почему запуск Sync.sh
завершается неудачно через PHP, но отлично работает при запуске через SSH.
Итак, вопросы:
- почемуPHP получает версию git, отличную от SSH?
- как я могу заставить PHP получить ту же версию, что и SSH?