1

这是一个奇怪的。我正在为 Laravel 4.1 队列运行带有 beanstalkd 的主管 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

唯一的区别是在程序中用阶段替换生产。但是,当supervisor运行时,只有stage程序正确执行。生产程序显示 FATAL Exited too faster

appname-production            FATAL     Exited too quickly (process log may have details)
appname-stage                 RUNNING   pid 6784, uptime 0:32:01

舞台队列工作正常,如 ps aux 所示。此外,在生产文件夹中运行 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.

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

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

4

1 回答 1

3

终于解决了这个问题并想分享。与其他解决方案一样,该修复与设置 php.ini 的绝对路径有关。但是,PATH 变量也需要通过子进程配置中的环境设置。开始了:

[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"

希望这对将来的人有所帮助!

于 2015-02-28T02:55:32.657 回答