Запуск git с помощью PHP скрипт

Я пытался Perfect Workflow с Git, GitHub и SSH, и у меня есть все настроенное, за исключением выполнения команды git pull от php.

Когда я запустил exec('git pull'), я получаю:

Не удалось создать каталог '/.ssh'. Ошибка проверки ключа хоста. фатальный: удаленный конец неожиданно повесил трубку

Если я запустил его в терминале (как пользователь root), он работает нормально, но мне нужен этот хук для работы с URL-адресом после получения (Github).

Если я делаю exec('whoami'), я получаю apache.

Это a (dv) из mediatemple с CentOS.

Ответ 1

Если вы хотите, чтобы apache (пользователь) мог извлекать из git, вам нужно создать ssh-ключ для apache, а затем добавить это к ключам только для чтения в github.

Поток - это что-то вроде этого (подстраивайте под свои нужды)

usermod -s /bin/bash apache
su apache
cd ~
ssh-keygen # work through the keygen dance (added a dash)

Загрузка (тильда здесь относится к apache homedir) ~/.ssh/id_rsa.pub для github и предоставления доступа apache к любому репозиторию, из которого ему нужно извлечь.

Затем вы можете протестировать на сервере снова su'ing для apache и запустить git pull

su apache
cd ~/working-copy
git clone my-project

После этой работы вы сможете запустить git pull через PHP.