无法使用 exec 运行 Laravel Envoy(在命令行中工作但不适用于 Artisan::call)

Can't run Laravel Envoy with exec (works in command line but doesn't with Artisan::call)

我有一个在 Laravel 命令中触发的特使脚本。

php artisan proxy:update

public function handle() {
   exec("envoy run update");
}

如果我 运行 在命令行上将其作为 php artisan proxy:update,它会起作用。

但是,如果我 运行 在我的 Laravel 应用程序中 Artisan::call('proxy:configure'); 它不起作用。


在控制台中 whoami = vagrant;同样在我的命令中 exec('whoami') 也是流浪者。


如果我把它改成

$out =  shell_exec('envoy run update');
dd($out);

在命令行中显示输出,但在 Artisan::call() 中,它 returns 空字符串。


能够将 exec() 与 artisan 命令一起使用可能有什么问题?


据我了解,php-fpm 阻止了它。我尝试使用 Symfony 的进程而不是 exec(),但我被“终止”了。然后我将 Artisan::call() 移动到 Artisan::queue() 并且它起作用了。我很高兴知道是否有人有任何其他解释。

更新: 我创建了一个由 deployer 用户创建的 运行 队列,它具有 sudo 权限(通常是 www-data 运行 我的队列)。现在完美运行了。