Я написал простой скрипт 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? Есть ли разница в этом случае?
Я нашел решение. Надеюсь, это кому-нибудь поможет.
Были две проблемы:
Проблема возникла из-за того, что веб-браузер не сбрасывает предупреждения и не прерывает сообщения при выполнении команды shell_exec. Если вы хотите протестировать ваш скрипт, вы должны войти в консоль по SSH (например, как root), а затем выполнить скрипт / команду как пользователь apache:
sudo -u www-data php /path-to-your-script/script.php
В консоли вы увидите все проблемы, которые генерирует следующий пользователь.
Других решений пока нет …