好的,所以我试图从一个控制器函数调用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"
答案 0 :(得分:1)
我相信这是laravel app用户的权限。您应该考虑到laravel进程由不具有执行www-data
权限的其他用户(可能是envoy
)拥有。
要解决此问题,您必须调整envoy
的权限,这可能会导致安全漏洞并在不同的部署上耗费时间。
sudo chown www-data:www-data ~/.composer/vendor/laravel/envoy/envoy
但,我建议您在项目中使用composer require laravel/envoy
并从vendor/bin/envoy
执行。
答案 1 :(得分:0)
我使用以下方法找到了解决方案:laravelcollective.com/docs/5.0/ssh