这是一个奇怪的。我正在为 Laravel 4.1 队列运行带有 beanstalkd 的 supervisor 3.13。我的应用程序正在运行/stage/和/production/实例。我正在运行主管程序来运行 artisan queue:listen(在单独的 .conf 文件之外),如下所示:
[program:appname-production]
command=php artisan queue:listen --env=production
directory=/home/servername/public_html/production
stdout_logfile=/home/servername/public_html/production/app/storage/logs/supervisord.log
redirect_stderr=true
autostart=true
autorestart=true
唯一的区别是在程序中用 stage 替换了 production。但是supervisor运行时,只有stage程序正确执行。生产程序显示 FATAL Exited too quickly
appname-production FATAL Exited too quickly (process log may have details)
appname-stage RUNNING pid 6784, uptime 0:32:01
阶段队列工作正常,如 ps aux 所示。此外,在 production 文件夹中运行 artisan queue:listen 也能正常工作。然而,当我检查用于生产的 supervisord 日志时,它充满了:
X-Powered-By: PHP/5.5.20
Content-type: text/html
[InvalidArgumentException]
There are no commands defined in the "queue" namespace.
我已经用尽了我对这里设置的技术知识 - 我似乎无法推断出为什么两个克隆设置的行为不同。我只能猜测主管在某个地方被搞糊涂了——因为我可以通过手动操作使生产队列正常工作。
非常感谢所有帮助/想法。
最佳答案
终于解决了这个问题,想分享一下。与其他解决方案一样,修复必须与设置 php 的绝对路径有关。但是,还需要通过子进程 conf 中的环境设置 PATH var。我们开始吧:
[program:appname]
command=/usr/local/bin/php artisan queue:listen --env=production
directory=/home/appdir
stdout_logfile=/home/appdir/app/storage/logs/supervisord.log
redirect_stderr=true
autostart=true
autorestart=true
environment=PATH="/usr/local/bin"
希望这对以后的人有帮助!
关于laravel - Supervisord Fatal (Laravel 4.1 + Beanstalkd) "queue"命名空间中没有定义任何命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093911/