1

好的,所以我试图从控制器函数调用 Envoy,但遇到了其他人似乎没有遇到的权限问题?

我已经在全球范围内安装了 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"
4

2 回答 2

1

我相信这是 laravel 应用程序用户的许可。您应该考虑到 laravel 进程由另一个www-data无权执行的用户(大概)拥有envoy

要解决此问题,您必须调整其权限,envoy这可能会导致安全漏洞并在不同的部署中耗费时间。

sudo chown www-data:www-data ~/.composer/vendor/laravel/envoy/envoy

但是,我建议您composer require laravel/envoy在您的项目中使用并从vendor/bin/envoy.

于 2017-06-05T11:33:16.180 回答
0

我找到了一个解决方案:laravelcollective.com/docs/5.0/ssh

于 2017-06-05T13:43:42.253 回答