代码之家  ›  专栏  ›  技术社区  ›  Emmanuel Figuerola

Laravel 4 Queue-〔InvalidArgumentException〕“Queue”命名空间中没有定义任何命令

  •  0
  • Emmanuel Figuerola  · 技术社区  · 13 年前

    我使用Laravel 4+Beanstalk+Supervisor在一个CentOS 6 VPS上。

    在VPS上安装豆茎和supervisor已经很痛苦了,但我还是挺过来了(我在本地服务器Macbook Pro上也做了同样的安装,它在那里运行得很好)。

    我想利用Laravel 4的Queues和Beanstalk异步发送电子邮件。我为主管制作了一个“程序”,基本上可以运行命令

    php artisan queue:listen --env=production
    

    但与此相关的过程不会成功启动。我为此过程定义的日志输出以下内容:

    [InvalidArgumentException]
    There are no commands defined in the "queue" namespace.
    

    所以很明显,工匠正在发现一些它根本不喜欢的东西。

    求你了,求你了, 拜托 ,你能帮我吗?我在谷歌上找到的唯一结果是 未获答复的 git问题帖子,以及Laravel论坛上一个同样无用的没有答案的帖子。

    编辑 :测试我注意到,当我在shell中运行Artisan的queue:listen时,它运行得很好,但当Supervisord试图运行该命令时,会发生InvalidArgumentException。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Emmanuel Figuerola    13 年前

    在我的案例中,如果你们中的任何一个人遇到过这个问题,解决方案如下:

    我安装了supervisord 2.1版(通过pip)。我至少需要3.0版本(因为“目录”设置(在supervisord.conf文件中使用)是在3.0版本中引入的。

    我不得不

    pip uninstall supervisor
    

    然后我不得不

    pip install supervisor==3.0
    

    之后,我只需要在/etc/supervisord.conf中设置所需的配置值 artisan 正在运行 queue:listen 没有问题。

        2
  •  0
  •   Community Mohan Dere    9 年前

    我也遇到了类似的问题,并得到了我发布的对我有效的问题的答案:

    Supervisord makes my Laravel queue:listen throw InvalidArgumentException

    与其这样做:

    [program:lvcartsey]
    command=php artisan queue:listen --env="local"
    stdout_logfile=/home/mike/web/app/storage/logs/myqueue_supervisord.log
    redirect_stderr=true
    directory=/home/mike/web
    ;autorestart=true
    ;autostart=true
    user=mike
    

    在supervisor.conf中,我将命令替换为:

    command=/usr/local/bin/php artisan queue:listen --env="local"