2

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

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(),它返回空字符串。


能够exec()与工匠命令一起使用可能是什么问题?


4

1 回答 1

0

据我了解,php-fpm 阻止了它。我尝试使用 Symfony 的 Process 而不是exec()我被“终止”了。然后我搬到Artisan::call()那里Artisan::queue(),它奏效了。我很高兴知道是否有人有任何其他解释。

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

于 2020-08-18T13:02:37.923 回答