Это ssh-URL для исходного хранилища?У вас работает ssh-agent, когда вы делаете это вручную?Предоставили ли вы ssh агенту доступ к сценарию оболочки (подсказка, ответы да, да, нет. Возможно.)
Итак, мы определили, что проблема заключается в ssh-доступе.Затем у вас есть два варианта: получить учетные данные ssh-agent в процессе php и разрешить скрипту php доступ к учетным данным ssh без пароля.И то и другое проблематично, так или иначе.
Чтобы получить учетные данные assh-agent в процесс php, скопируйте переменную окружения $ SSH_AUTH_SOCK из оболочки в скрипт php / shell SSH_AUTH_SOCK=/tmp/ssh-wScioBA10361/agent.10361 git pull
.Затем, если у php-скрипта достаточно привилегий для доступа к этому файлу, будет работать git pull.Это проблематично, потому что вам нужно войти в систему через ssh, чтобы получить носок авторизации, изменить программу на использование нового сокета (или написать программу для поиска текущего сокета) и оставить все работающим.Выйдите из системы, перезагрузитесь и т. Д., И вы потеряете функциональность git pull.
Другой вариант - создать учетные данные ssh для пользователя php / shell, который запускает git pull
.Найдите домашний каталог, создайте новые ключи .ssh и ssh-keygen для этого пользователя.Вы можете настроить закрытый ключ так, чтобы он не имел пароля, чтобы любой, кто может получить доступ к этому файлу (угроза безопасности !!), мог ssh использовать эти учетные данные.Добавьте открытый ключ к авторизованным ключам учетной записи, имеющей доступ к git-репо (gitolite позволит вам ограничить права, которые может иметь эта учетная запись).