Итак, я пытаюсь вызвать Envoy из функции контроллера, но сталкиваюсь с проблемами с разрешениями, которые, похоже, никто больше не получает?
Я установил посланника глобально и сделал символическую ссылку на / usr / local / bin, чтобы мой сайт мог его увидеть. Но я не могу понять, почему у него нет разрешения.
Я работаю с Ubuntu 16.04, Nginx, PHP 7.0
Любая помощь приветствуется:
$result = [];
$live = false;
$process = new \Symfony\Component\Process\Process('envoy run deploy --domain="test"');
$process->setTimeout(3600);
$process->setIdleTimeout(300);
$process->setWorkingDirectory(base_path());
$process->run(
function ($type, $buffer) use ($live, &$result) {
$buffer = str_replace('[127.0.0.1]: ', '', $buffer);
if ($live) {
echo $buffer . '</br />';
}
$result[] = $buffer;
}
);
dd($result);
Но получая:
0 => "sh: 1: "1 => "envoy: Permission denied"2 => "\n"
Я считаю, что это разрешение для пользователя приложения laravel. Следует учитывать, что процесс laravel принадлежит другому пользователю (предположительно www-data
) кто не имеет разрешения на казнь envoy
,
Чтобы исправить это, вы должны настроить разрешения envoy
что может привести к слабым местам безопасности и отнимает много времени в различных развертываниях.
sudo chown www-data:www-data ~/.composer/vendor/laravel/envoy/envoy
тем не мение, Я рекомендую вам использовать composer require laravel/envoy
в вашем проекте и выполнить его из vendor/bin/envoy
,
Я нашел решение, используя: laravelcollective.com/docs/5.0/ssh