Git pull «разрешение запрещено» при использовании shell_exec в переполнении стека

Я пытаюсь подключиться к bitbucket, который выполняет файл php, и этот файл выполняет команду pull:

shell_exec('/usr/local/cpanel/3rdparty/bin/git pull');

Команда pull отлично работает на консоли SSH, но PHP возвращает ошибку:

В доступе отказано (publickey). неустранимый: не может читать с пульта
репозиторий.

Пожалуйста, убедитесь, что у вас есть правильные права доступа и хранилище
существует.

Команда —версия показывает путь к мерзавцу, whoiami возвращает одного и того же пользователя на обоих, так что я не знаю, если это проблема с разрешениями.

Что может пойти не так?

Редактировать: Дополнительная проблема: псевдоним, который я добавил для мерзавец не работает на PHP, только полный путь, как указано выше. Через терминал работает просто отлично. Возможно, это та же самая причина, по которой ключ не работает в php.

Изменить 2: $PATH отличается на обоих.

1

Решение

Когда вы запускаете эту команду в скрипте PHP, вы не запускаете команду как вы:

shell_exec('/usr/local/cpanel/3rdparty/bin/git pull');

Причина, по которой он работает с консоли терминала, заключается в том, что вы запускаете команду как вы сами из консоли. Но на веб-сервере вы не являетесь пользователем, выполняющим команду. Помните: когда вы запускаете PHP на веб-сервере, это модуль Apache. Имеется в виду пользователь веб-сервера, который может быть www-data, root или даже apache в некоторых системах — работает скрипт PHP, который затем запускает shell_exec команда.

Таким образом, это никогда не будет работать, как у вас есть настройки. Возможно, вы можете объединить что-то вместе, что позволит веб-серверу использовать пару ключей для этих целей, но это похоже на угрозу безопасности, ожидающую своего появления.

2

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

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

По вопросам рекламы [email protected]