【问题标题】:Laravel 4 Queue - [InvalidArgumentException] There are no commands defined in the "queue" namespaceLaravel 4 队列 - [InvalidArgumentException] “队列”命名空间中没有定义命令
【发布时间】:2013-10-04 10:25:47
【问题描述】:

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

在 VPS 上同时安装 beanstalk 和 supervisor 已经很痛苦了,但我成功了(我在本地服务器 Macbook Pro 上完成了同样的安装,并且在那里运行良好)。

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

php artisan queue:listen --env=production

但与之关联的进程不会成功启动。我为此过程定义的日志输出如下:

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

显然,工匠正在寻找它根本不喜欢的东西。

拜托,拜托,拜托,你能帮帮我吗?我在 Google 上找到的唯一结果是 unanswered git 问题帖子,以及 Laravel 论坛上没有答案的同样无用的帖子。

编辑:测试我注意到我在 shell 中运行 Artisan 的 queue:listen 工作正常,但是当 Supervisord 尝试运行该命令时,会发生 InvalidArgumentException。

【问题讨论】:

    标签: php queue laravel-4 supervisord beanstalkd


    【解决方案1】:

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

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

    我不得不

    pip uninstall supervisor
    

    然后我不得不

    pip install supervisor==3.0
    

    之后,我只需在 /etc/supervisord.conf 中设置所需的配置值,我的 artisan 就可以毫无问题地运行 queue:listen

    【讨论】:

      【解决方案2】:

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

      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"
      

      【讨论】:

        猜你喜欢
        • 2015-03-21
        • 1970-01-01
        • 2016-11-03
        • 2017-09-16
        • 2014-11-28
        • 1970-01-01
        • 2017-09-12
        • 2019-10-29
        • 2022-10-17
        相关资源
        最近更新 更多