我正在尝试在Docker容器中运行php程序,以侦听RabbitMQ的数据。
这是我到目前为止所做的:
[运行程序时,我收到“警告:require(./ vendor / autoload.php):无法打开流:/usr/src/myapp/test.php中第3行上没有此类文件或目录”
我运行了“ composer install”,但仍然出现错误,请尽可能提供帮助。
# PHP dependency manager
FROM composer:1.9.3 AS composer
FROM php:7.4.3-cli
# Copies dependency manager into PHP image
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
# Install RabbitMQ PHP client
RUN apt-get -qq update && apt-get -qq -y install \
git \
libzip-dev \
unzip \
&& docker-php-ext-install \
sockets \
zip \
&& composer require php-amqplib/php-amqplib \
&& composer install
# Copies files from a source directory into the containers filesystem
COPY . /usr/src/myapp
CMD ["php", "/usr/src/myapp/test.php"]
test.php
<?php
require 'vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('messaging', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
};
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while ($channel->is_consuming()) {
$channel->wait();
}
$channel->close();
$connection->close();
编辑:test.php的第1行以前使用的是require_once __DIR__ . '/vendor/autoload.php';
,实际上是在根目录中安装了vendor时指向当前目录。
test.php的第1行先前使用了require_once DIR。 '/vendor/autoload.php';并实际上在根目录中安装了vendor时指向当前目录。