git — PHP: другой результат при запуске скрипта через HTTP и в командной строке

У меня есть репозиторий GIT, и я использую PHP-скрипт для извлечения из главной ветки и обновления файлов на сервере. Это действительно простое решение, просто чтобы проверить это. Я хотел добавить webhook на github для отправки обратного вызова после успешного нажатия, чтобы я мог вытащить из этого репо.

Скрипт работает в обе стороны

  • из командной строки
  • из HTTP-запроса

Разница в том, что когда я запускаю его из HTTP, он не извлекает новые изменения, а просто показывает, что он обновлен и ничего не делает, даже если я на 100% уверен, что в репо есть новые изменения. Выходные данные поступают из команды GIT, поэтому я уверен, что она работает, и apache имеет надлежащие права для запуска этого файла сценария и команд, которые используются внутри него.

Когда я запускаю его через командную строку (через тот же скрипт или просто чистую команду git), все в порядке, скрипт извлекает новые изменения и отображает стандартный вывод GIT.

Код PHP:

echo "Pulling changes from master branch...\n";
$result = shell_exec('cd /var/git-test && git reset --hard HEAD && git pull');
if($result !== null){
echo $result;
}else{
echo $result;
echo "Error in Git pull comand";
}

Как я могу это исправить?

3

Решение

sudo -u www-data php deploy.php показал, что у пользователя www-data не было зарегистрировано ключа ssh на github и не удалось выполнить pull. Я не смог переключиться на пользователя www-data, поэтому я сгенерировал его ключ, не переключаясь на него, как при запуске скрипта sudo -u www-data ssh-keygen -t rsa, После регистрации его ключа на github он работает как шарм.

Также про совет! shell_exec () не показывает все выходные данные, которые были видны, когда я запускаю скрипт как другой пользователь в командной строке. Это действительно сбивало с толку и стоило мне много времени, чтобы выяснить, где была ошибка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector