php - 运行 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 实例。
解决方案
终于解决了 我不知道我必须通过 Docker 来运行这个命令。这对我有用:
docker exec -ti container_name sh -c "cd /var/www/project/ && php bin/console messenger:consume-messages amqp"
推荐阅读
- vba - 删除vba中某个时间范围内的重复项(例如一周内的重复项)
- html - 使用 iframe 标记加载嵌入式 HTML 页面时,应用程序突然终止
- java - 最新更新后 Android Studio 崩溃
- r - 在 R 中添加缺少数据的长格式术语
- javascript - 如何在一个页面中打开多个对话框?
- python - Python:UnicodeDecodeError,默认编码为 ASCII
- java - Heroku 进程应该始终保持运行,但是当它被 ping 时,它会因 H20 错误而崩溃
- java - 无法让 Maven 运行 JUnit 测试
- sql-server - 协助 SQL 查询(需要添加更多的列和过滤器)
- multithreading - dlclose 后共享库生成的线程会发生什么