【问题标题】:Can't run Laravel Envoy with exec (works in command line but doesn't with Artisan::call)无法使用 exec 运行 Laravel Envoy(在命令行中工作,但不适用于 Artisan::call)
【发布时间】:2020-07-27 16:22:04
【问题描述】:

我有一个在 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() 与 artisan 命令一起使用可能会出现什么问题?


【问题讨论】:

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

标签: php laravel exec shell-exec laravel-envoy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 2017-11-02
    • 1970-01-01
    • 2021-06-06
    • 2017-08-08
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多