Я прочитал эту ветку для правильной настройки кеширования учетных данных.
Все работает без сбоев, пока я не почувствовал необходимость настроить GitHub Webhook .
Итак, я поместил сценарий в папку /bash_scripts/..
, которая правильно назначена для www-data
рекурсивно.
ls -l
вывод:
drwxr-xr-x 2 www-data root 4096 May 7 01:31 bash_scripts
И это содержимое одного из bash
скриптов для выполнения pull
#!/bin/bash
cd /var/www/beta && git pull origin master
Затем у меня есть PHP конечная точка, вызывающая shell_execute в приведенном выше сценарии:
PHP> shell_exec('/bash_scripts/beta-github-hook.sh');
И я бился головой около часа, пытаясь выяснить, почему это не выполнялось. Причина?
Учетные данные для Репозиторий GitHub доступ не сохраняется для пользователя www-data
. Это команда, которую я использовал для репликации shell_exec
на терминале, чтобы получить вывод проблемы:
root@vps806928:/# su --shell /bash_scripts/beta-github-hook.sh www-data
Username for 'https://github.com':
С другой стороны, если я выполню сценарий как root
, git использует сохраненные учетные данные:
root@vps806928:/# /bash_scripts/beta-github-hook.sh
From https://github.com/redacted
* branch master -> FETCH_HEAD
Already up to date.
root@vps806928:/#
Как я могу сделать Git сохранить учетные данные для www-data
?
EDIT
Единственный обходной путь, который я нашел, - это отредактировать сценарий bash и явно записать пароль для репозитория, из которого нужно извлечь:
git pull https://user:passwd@github.com/user/repo.git master
Хотя это обходной путь, я все еще ищу ответ на проблему под вопросом.