Laradock - 运行 Redis 队列与 Supervisor 抛出错误 - 调用未定义的函数 Moontoast\Math\bcadd()

Laradock - Running Redis queues with Supervisor throwing the error - Call to undefined function Moontoast\Math\bcadd()

我正在 运行在 Laradock 上创建一个 Laravel 项目。我有一个作业 class 可以处理发送邮件的通知 class。作业使用 Redis 作为队列驱动程序,一切都已设置好

我已经设置好 Supervisor 并开始工作了。下面是我的 .conf 文件,在作业 运行s:

时由 Supervisor 执行
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work redis --sleep=3 --tries=5 --daemon
autostart=true
autorestart=true
numprocs=8
user=root
redirect_stderr=true
stdout_logfile=/var/www/worker.log

这是在 Laradock 的 php-worker>supervisord.d 目录中设置的。我还设置了 Laravel Horizo​​n 来监控我的 Redis 队列。执行作业时,主管 运行 执行作业,这在我的 worker.log 文件中得到确认,该文件记录了作业的处理,如上述 .conf 文件中所定义,如下所示:

[2019-10-14 12:18:27][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:30][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:31][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:33][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:35][21] Processing: App\Jobs\NewStaffAdded

当我访问我的 Horizo​​n 仪表板时,我发现作业失败了。单击失败的作业以了解更多详细信息,我收到此异常:

Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function Moontoast\Math\bcadd() in /var/www/vendor/moontoast/math/src/Moontoast/Math/BigNumber.php:506

为上述异常寻找可能的解决方案,我发现原因是缺少 PHP 的 Bcmath 模块,但我已经 运行 以下命令并确认我有这个模块:

dpkg --list | grep -i bcmath

显示我的 PHP 版本 (7.3) 有 Bcmath 模块。所以不知道为什么我会收到提到的异常,这会阻止我的队列被执行。

问题归结为 [=28 下 Laradock 的 .env 文件中没有 Bcmath 模块=] 部分设置为 true。首先,模块必须安装在您的工作区中,然后在 PHP_FPMPHP_WORKER 部分下打开它.我的错误是我只在 PHP_FPM 部分下设置了 true 所以必须在 PHP_WORKER 部分下做同样的事情