首页 > 解决方案 > 运行 Symfony 命令时无法加载 PHP 类

问题描述

对于以下问题,我将不胜感激。

我已经设置 Symfony Messenger 以使用 AMQP 和 RabbitMQ。我可以在我的项目中发送消息并使用 AMQPConnection。

但是当我尝试使用该消息时,我得到以下信息:

    $ php bin/console messenger:consume-messages amqp

        尝试从全局命名空间加载类“AMQPConnection”。
        您是否忘记了“PhpAmqpLib\Connection\AMQPConnection”的“使用”语句?

控制台命令调用一个方法AmqpFactory.php

    公共函数 createConnection(array $credentials): \AMQPConnection
    {
        返回新的 \AMQPConnection($credentials);
    }

因此,当我从浏览器运行项目时,一切正常。我可以使用 AMQPConnection 和所有。但是从终端运行时,它找不到 AMQPConnection 类。

在我的 composer.json 中,我还安装了 amqplib

    "php-amqplib/php-amqplib": "^2.7",

我使用 Docker,Dockerfile 包含:

    来自 php:7-apache

    运行 usermod -u 1000 www-data &&\
        a2dissite 000-默认 &&\
        apt-get 更新 &&\
        apt-get 安装 -y \
            zlib1g-开发\
            libicu开发者\
            克++\
            libfreetype6-开发\
            libssh-开发\
            libjpeg62-turbo-dev \
            libmcrypt-开发\
            librabbitmq-开发\
            libpng-开发 &&\
        docker-php-ext-configure 国际 &&\
        docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &&\
        docker-php-ext-install -j$(nproc) gd pdo_mysql intl opcache zip pcntl exif bcmath sockets &&\
        a2enmod 重写

    运行 pecl 安装 amqp \
        && docker-php-ext-启用 amqp

    复制 docker/apache2.conf /etc/apache2/apache2.conf

    工作目录 /var/www/project

更新! 我已经打印了 phpinfo() 并且在发送消息时我有版本 7.2.8 并且在执行终端命令时我有 7.2.7。所以终端在执行命令时没有使用 PHP 的 Docker 实例。

标签: phpsymfonydockerrabbitmqamqp

解决方案


终于解决了 我不知道我必须通过 Docker 来运行这个命令。这对我有用:

docker exec -ti container_name sh -c "cd /var/www/project/ && php bin/console messenger:consume-messages amqp"


推荐阅读