Php не может найти класс Stomp

Я пытаюсь получить очередь из ActiveMQ с помощью клиента PHP. Я включил в проект библиотеку Stomp. Вот дерево моего проекта:

TestPhp/
├── PhpInfo.php
├── SimpleStompConsumer.php
└── Stomp
├── Exception
|   └── StompException.php
├── ExceptionInterface.php
├── Frame.php
├── Message
│   ├── Bytes.php
│   └── Map.php
├── Message.php
└── Stomp.php

и вот мой код

<?php
$path = "/var/www/test/TestPhp/Stomp/Stomp.php";

require_once($path);
$con = new Stomp("tcp://localhost:61613");
$con->connect();
$con->subscribe("/queue/test");
$msg = $con->readFrame();if( $msg != null) {
echo "Received message with body '$msg->body'\n";
$con->ack($msg);
} else {
echo "Failed to receive a message\n";
}
$con->disconnect();

?>

Когда я запускаю php-файл, я получаю следующую ошибку и не знаю, что делать.
PHP Fatal error: Class 'Stomp' not found in /var/www/test/TestPhp/SimpleStompConsumer.php on line 5
PHP Stack trace: PHP 1. {main}() /var/www/test/TestPhp/SimpleStompConsumer.php:0

Буду признателен за любые директивы. Благодарю.

Edit:

Библиотека называется Stomp. Здесь
GitHub ссылка на сайт
и скачать ссылка на сайт

Edit:

+ Изменить $con = new Stomp("tcp://localhost:61613");
в $con = new FuseSource\Stomp\Stomp("tcp://localhost:61613"); $ con = new FuseSource \ Stomp \ Stomp («tcp: // localhost: 61613»);

ERROR returned:

PHP Fatal error: Class 'FuseSource\Stomp\Exception\StompException' not found in /var/www/test/TestPhp/Stomp/Stomp.php on line 174
PHP Stack trace:
PHP 1. {main}() /var/www/test/TestPhp/SimpleStompConsumer.php:0
PHP 2. FuseSource\Stomp\Stomp->connect() /var/www/test/TestPhp/SimpleStompConsumer.php:6
PHP 3. FuseSource\Stomp\Stomp->_makeConnection() /var/www/test/TestPhp/Stomp/Stomp.php:195

1

Решение

Библиотека Stomp — это пакет composer, поэтому вам нужен загрузчик классов composer или любой другой PSR-0-совместимый, см. Это https://getcomposer.org/doc/01-basic-usage.md.

Пример загрузчика класса PSR-0 из PHP-Fig: https://gist.github.com/jwage/221634

require_once 'path_to_spl_class_loader.php';
$loader = new SplClassLoader('FuseSource\Stomp', __DIR__.'/Stomp');
$loader->register();
new FuseSource\Stomp\Stomp();

Помимо этого класса пространства имен, добавьте эту строку в ваш файл:

use FuseSource\Stomp\Stop;
new Stomp();

Или использовать

new FuseSource\Stomp\Stomp();
0

Другие решения

Пытаться

$con = new FuseSource\Stomp\Stomp("tcp://localhost:61613");

(Пространство имен).

Изменить: один «Stomp» пропал без вести.

0

Для меня проблема была в том, что stomp.so не был зарегистрирован в моем движке PHP в Apache. Я использовал pear установить Stomp, который правильно зарегистрировал его в моем PHP-движке командной строки.

PHP-движок в моем Apache использует /etc/php.ini файл отдельно от /usr/local/etc/php/5.5/php.ini используется движком PHP, работающим в моей локальной командной строке. Насколько я могу судить, это рекомендуемая конфигурация (см. Изменить местоположение php.ini)

Чтобы исправить мне нужно было добавить extension="stomp.so" к /etc/php.ini файл, используемый моей службой Apache, а затем перезапустите Apache.

Мой код не имеет require_once, Я просто призываю $con = new Stomp('tcp://localhost:61613', $user, $password); непосредственно

0
По вопросам рекламы [email protected]