Supervisord Fatal (Laravel 4.1 + Beanstalkd) "queue" 命名空间中没有定义任何命令

Supervisord Fatal (Laravel 4.1 + Beanstalkd) No commands defined in the "queue" namespace

这是一个奇怪的问题。我是 运行ning supervisor 3.13 和 beantalkd 的 Laravel 4.1 队列。我的应用程序 运行ning 有一个 /stage/ 和 /production/ 实例。我正在 运行ning supervisor programs to 运行 artisan queue:listen (out of separate .conf files) for each for each:

[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

唯一不同的是节目中的制作换成了舞台。但是当supervisor 运行s时,只有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 所示。此外,生产文件夹中的 运行ning 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.

我已经用尽了我对这里设置的技术知识 - 我似乎无法解释为什么两个克隆的 setups 表现不同。我只能猜测 supervisor 在某处感到困惑 - 因为我可以通过手动操作使生产队列正常工作。

非常感谢所有帮助/想法。

终于解决了这个问题,想分享一下。与其他解决方案一样,修复必须将绝对路径设置为 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"

希望这对以后的人有所帮助!