Php 找不到 Stomp class
Php Can't find Stomp class
我正在尝试使用 PHP 客户端从 activemq 获取队列。我在项目中包含了一个 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 link
和 download link
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
尝试
$con = new FuseSource\Stomp\Stomp("tcp://localhost:61613");
(命名空间).
编辑:缺少一个 "Stomp"。
Stomp 库是一个 composer 包,因此您需要 composer class 加载程序或任何其他 PSR-0 兼容,请参阅此 https://getcomposer.org/doc/01-basic-usage.md。
示例 PSR-0 class 来自 PHP 的加载程序-图: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();
除了命名空间 class,将此行添加到您的文件中:
use FuseSource\Stomp\Stop;
new Stomp();
或使用
new FuseSource\Stomp\Stomp();
对我来说,问题是 stomp.so
没有在我的 Apache 中的 PHP 引擎中注册。我曾使用 pear
安装 stomp,它在我的命令行 PHP 引擎中正确注册了它。
我的 Apache 中的 PHP 引擎使用的 /etc/php.ini
文件与本地命令行上 PHP 引擎 运行 使用的 /usr/local/etc/php/5.5/php.ini
分开.据我所知,这是推荐的配置(参见 Change php.ini location)
为了补救,我需要将 extension="stomp.so"
添加到我的 Apache 服务使用的 /etc/php.ini
文件中,然后重新启动 Apache。
我的代码没有 require_once
。我只是直接调用 $con = new Stomp('tcp://localhost:61613', $user, $password);
我正在尝试使用 PHP 客户端从 activemq 获取队列。我在项目中包含了一个 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 link 和 download link
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
尝试
$con = new FuseSource\Stomp\Stomp("tcp://localhost:61613");
(命名空间).
编辑:缺少一个 "Stomp"。
Stomp 库是一个 composer 包,因此您需要 composer class 加载程序或任何其他 PSR-0 兼容,请参阅此 https://getcomposer.org/doc/01-basic-usage.md。
示例 PSR-0 class 来自 PHP 的加载程序-图: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();
除了命名空间 class,将此行添加到您的文件中:
use FuseSource\Stomp\Stop;
new Stomp();
或使用
new FuseSource\Stomp\Stomp();
对我来说,问题是 stomp.so
没有在我的 Apache 中的 PHP 引擎中注册。我曾使用 pear
安装 stomp,它在我的命令行 PHP 引擎中正确注册了它。
我的 Apache 中的 PHP 引擎使用的 /etc/php.ini
文件与本地命令行上 PHP 引擎 运行 使用的 /usr/local/etc/php/5.5/php.ini
分开.据我所知,这是推荐的配置(参见 Change php.ini location)
为了补救,我需要将 extension="stomp.so"
添加到我的 Apache 服务使用的 /etc/php.ini
文件中,然后重新启动 Apache。
我的代码没有 require_once
。我只是直接调用 $con = new Stomp('tcp://localhost:61613', $user, $password);