mercurial — php shell_exec и hg pull

Я написал простой скрипт php, чтобы помочь мне обновить содержимое сайта, когда коммит отправляется в bitbucket. У меня есть следующая проблема с этим.

<?php
$repo_dir = '/var/www/vhosts/my_full_path';

$output = shell_exec('cd '.$repo_dir.' && hg --config auth.rc.prefix=https://bitbucket.org/XXXXX --config auth.rc.username=my_username --config auth.rc.password=my_pass pull -u https://bitbucket.org/XXXXXXX &');

echo $output;
?>

Когда я набираю его в веб-браузере, он не работает. Вывод скрипта:

pulling from https://bitbucket.org/XXXXXXXXXXXXXX

но когда я пытаюсь выполнить его под консолью на сервере, он работает как шарм:

php myscript.php

генерирует следующий вывод:

pulling from https://bitbucket.org/XXXX
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

Смотри вышло полно и правильно! в concole я использую root-пользователь в веб-браузере data-www? Есть ли разница в этом случае?

3

Решение

Я нашел решение. Надеюсь, это кому-нибудь поможет.

Были две проблемы:

  • Разрешения на мой репо
  • Аутентификация пользователя www-данных для этого репо

Проблема возникла из-за того, что веб-браузер не сбрасывает предупреждения и не прерывает сообщения при выполнении команды shell_exec. Если вы хотите протестировать ваш скрипт, вы должны войти в консоль по SSH (например, как root), а затем выполнить скрипт / команду как пользователь apache:

sudo -u www-data php /path-to-your-script/script.php

В консоли вы увидите все проблемы, которые генерирует следующий пользователь.

0

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

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

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