当前位置: 首页 > 知识库问答 >
问题:

运行Symfony命令时无法加载PHP类

高展
2023-03-14

我将感谢任何帮助,我可以得到以下问题。

    $   php bin/console messenger:consume-messages amqp

        Attempted to load class "AMQPConnection" from the global namespace.
        Did you forget a "use" statement for "PhpAmqpLib\Connection\AMQPConnection"?
    public function createConnection(array $credentials): \AMQPConnection
    {
        return new \AMQPConnection($credentials);
    }

所以当我从浏览器运行项目时,一切都很好。我可以使用AMQPConnection等。但是从终端运行时,它找不到AMQPConnection类。

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

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

我使用Docker,Dockerfile包含:

    FROM php:7-apache

    RUN usermod -u 1000 www-data &&\
        a2dissite 000-default &&\
        apt-get update &&\
        apt-get install -y \
            zlib1g-dev \
            libicu-dev \
            g++ \
            libfreetype6-dev \
            libssh-dev \
            libjpeg62-turbo-dev \
            libmcrypt-dev \
            librabbitmq-dev \
            libpng-dev &&\
        docker-php-ext-configure intl &&\
        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 rewrite

    RUN pecl install amqp \
        && docker-php-ext-enable amqp

    COPY docker/apache2.conf /etc/apache2/apache2.conf

    WORKDIR /var/www/project

更新!我已经打印了phpinfo(),当发送消息时,我有版本7.2.8,当执行终端命令时,我有版本7.2.7。因此,终端在执行命令时不使用PHP的Docker实例。

共有1个答案

戚鸿福
2023-03-14

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

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

 类似资料:
  • 无论何时运行docker构建,我都会得到: “msbuild”不被识别为内部或外部命令,可操作程序或批处理文件。并且“nuget.exe”不被识别为内部或外部命令,可操作程序或批处理文件。 但是,当我从CMD运行msbuild或nuget恢复时,它自己可以正常工作。我已经添加了系统变量/路径的路径

  • 问题内容: 我尝试使用Jekyll新命令,但是它不起作用,并在出现错误后出现。 我正在使用Mac OS X 10.8.5 Mountain Lion。 但这对我的情况不起作用。我卸载并重新安装了json,但没有任何反应。如果您知道其他解决方案,请告诉我。自本周初以来,我一直在解决这个问题。 我的宝石清单和宝石环境如下。 请给我建议以帮助我。谢谢! 3月7日更新。 以防万一您想查看自制软件列表, 2

  • 我读了一百个与此相关的帖子,但似乎没有什么对我的情况有帮助。 我的命令发生了一件奇怪的事情。首先,对于当前的任务,我需要使用一本算法书中的教科书库,该书中的安装程序还设置了Java SE 7。我以前在我的电脑上安装了Java 8 JDK(如果这是值得了解的信息)。因此,例如,当我运行涉及该教科书库中方法的程序时,我会编写。 昨晚Path变量有点问题,我无法编译任何东西,所以我设置了一些变量,然后就

  • 问题内容: 我有一个bash脚本,可以通过命令行像这样运行: 我在调用某个php文件后尝试执行上述命令。 我现在所拥有的是: 但这是行不通的。我尝试过使用和太,但剧本从来没有得到执行。 但是,当我尝试运行它时,它确实起作用,并且是所有文件的列表。 我不确定这是由于我使用的VPS的限制还是问题出在其他地方? 问题答案: 您可能需要在调用脚本之前将chdir更改到正确的目录。这样,您可以在调用shel

  • 问题内容: 我试图从Java 运行命令而没有成功。这是我的Java代码: 我也尝试过: 问题是,如果我打印出的内容并在终端中运行它,它将起作用。由于某种原因,它只是不从Java执行。更清楚地说,当我直接从终端运行命令时,“ items.xml”文件就会更改。当我从Java运行它时,文件不会更改。我已验证该命令正确无误,如下所示。 我想念什么吗? cmd的输出是 **编辑 我根据以下评论进行了以下更

  • 问题内容: 试图安装elasticsearch并在我的dockerfile中遇到错误。似乎无法运行bin。 docker的新事物,因此将不胜感激任何帮助。我正在运行root用户,因此无需在任何这些命令前添加sudo。 问题答案: 像这样安装密钥似乎存在问题。这里和这里都有类似的问题。 建议的解决方案是像这样拆分命令: 就您而言,我怀疑命令的输出不是关键。可能是其他原因(例如代理响应)或错误。尝试删