首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php找不到Stomp类

Php找不到Stomp类
EN

Stack Overflow用户
提问于 2015-02-04 16:52:13
回答 3查看 2K关注 0票数 1

我正在尝试使用PHP客户端从activemq获取一个队列。我在这个项目中包括了一个stomp库。这是我的项目树:

代码语言:javascript
复制
TestPhp/
├── PhpInfo.php
├── SimpleStompConsumer.php
└── Stomp
    ├── Exception
    |   └── StompException.php
    ├── ExceptionInterface.php
    ├── Frame.php
    ├── Message
    │   ├── Bytes.php
    │   └── Map.php
    ├── Message.php
    └── Stomp.php

这是我的密码

代码语言:javascript
复制
<?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

如有任何指示,我将不胜感激。谢谢。

代码语言:javascript
复制
Edit:  

图书馆叫做Stomp。下面是github链接和下载链接

代码语言:javascript
复制
Edit:

$con = new Stomp("tcp://localhost:61613");更改为$con = new FuseSource\Stomp\Stomp("tcp://localhost:61613"); $con =新的

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-05 09:12:45

Stomp库是一个composer包,所以您需要composer类加载程序或任何其他PSR-0兼容的,请参阅此https://getcomposer.org/doc/01-basic-usage.md

PHP-图中的PSR-0类装入器示例:https://gist.github.com/jwage/221634

代码语言:javascript
复制
require_once 'path_to_spl_class_loader.php';
$loader = new SplClassLoader('FuseSource\Stomp', __DIR__.'/Stomp');
$loader->register();
new FuseSource\Stomp\Stomp();

除了名称空间类之外,还将这一行添加到您的文件中:

代码语言:javascript
复制
use FuseSource\Stomp\Stop;
new Stomp();

或使用

代码语言:javascript
复制
new FuseSource\Stomp\Stomp();
票数 0
EN

Stack Overflow用户

发布于 2015-02-04 17:12:07

试一试

代码语言:javascript
复制
$con = new FuseSource\Stomp\Stomp("tcp://localhost:61613");

(命名空间)

编辑:一个"Stomp“不见了。

票数 0
EN

Stack Overflow用户

发布于 2015-05-07 18:39:12

对我来说,问题是stomp.so没有在我的Apache中注册。我使用pear安装stomp,它在命令行PHP中正确地注册了它。

我的Apache中的PHP正在使用一个/etc/php.ini文件,该文件与运行在本地命令行上的PHP使用的/usr/local/etc/php/5.5/php.ini不同。据我所知,这是推荐的配置(请参阅改变php.ini位置)

为了补救,我需要将extension="stomp.so"添加到Apache服务使用的/etc/php.ini文件中,然后重新启动Apache。

我的代码没有require_once。我只需直接调用$con = new Stomp('tcp://localhost:61613', $user, $password);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28326944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档