php-mqtt连接失败

emqx版本:开源版5.1
操作系统:centos 8
php版本:7.4
php-mqtt/client版本:1.8

emqx后台-》访问控制-》客户端认证 使用的是Password-based认证方式(内置数据库),然后添加用户名 test1 密码 123456

使用mqttx客户端能正常连接,使用php-mqtt连接失败,报错信息:”[6] Establishing a connection to the MQTT broker failed: The configured broker responded with unauthorized.“
但是禁用掉Password-based的认证方式,php-mqtt能连接成功。
php代码如下:

$connectionSettings = new ConnectionSettings();
$connectionSettings
->setUsername(‘test1’)
->setPassword(‘123456’)
->setKeepAliveInterval(60);

    $mqtt = new MqttClient($this->config['server'], $this->config['port'], $clientId);
    $mqtt->connect($connectionSettings, $this->config['clean_session']);
    $mqtt->publish($topic, json_encode($payload), $qos, $retain);
    $mqtt->disconnect();

不知道是哪里没搞对。。。求大神帮忙看下,谢谢!

Hi, 可以参考意一下这篇 blog

我代码就是参考的这篇文章的。我换成上面blog里边的服务器地址、用户名、密码,测试是链接成功的。
不过blog里的服务器地址 貌似没有开启用户名 密码认证,我随便输入的用户名和密码都能连接成功。。
希望官网能开启用户名和密码认证后,测试下上面的代码是否能连接成功。

面板里能看到认证不匹配的次数

这里的不匹配,证明是通过用户名没有在内置数据库查询到… 看看是不是什么过程过程中多了什么空格什么的?

好的 我再仔细检查下,多谢

emqx这边,有什么方法能记录到php端的请求日志吗

直接开启 DEBUG 日志好了,反正是测试,上生产在关掉 日志 | EMQX 5.0 文档

注意这个代码的坑,非常的坑
php代码如下:

$connectionSettings = new ConnectionSettings();
$abc=$connectionSettings
->setUsername(‘test1’)
->setPassword(‘123456’)
->setKeepAliveInterval(60);

    $mqtt = new MqttClient($this->config['server'], $this->config['port'], $clientId);
    $mqtt->connect($abc, $this->config['clean_session']);
    $mqtt->publish($topic, json_encode($payload), $qos, $retain);
    $mqtt->disconnect();

这样修改就行了