使用官方代碼里的程序,僅僅修改了URL,我用mqttfx,并且配置好后是可以連接mqtt服務(wù)端,但是用PHP程序卻一直報這個錯,請老師幫忙看一下
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://localhost:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('test');
};
$mqtt->onMessage = function($topic, $content){
var_dump($topic, $content);
};
$mqtt->connect();
};
Worker::runAll();
---------------------------------------------- WORKERMAN -----------------------------------------------
Workerman version:4.2.1 PHP version:8.0.2
----------------------------------------------- WORKERS ------------------------------------------------
worker listen processes status
none none 1 [ok]
PHP Fatal error: Declaration of Workerman\Mqtt\Protocols\Mqtt::input(string $buffer, Workerman\Connection\ConnectionInterface $connection): int must be compatible with Workerman\Protocols\ProtocolInterface::input($recv_buffer, Workerman\Connection\ConnectionInterface $connection) in F:\mqtt\vendor\workerman\mqtt\src\Protocols\Mqtt.php on line 136
Fatal error: Declaration of Workerman\Mqtt\Protocols\Mqtt::input(string $buffer, Workerman\Connection\ConnectionInterface $connection): int must be compatible with Workerman\Protocols\ProtocolInterface::input($recv_buffer, Workerman\Connection\ConnectionInterface $connection) in F:\mqtt\vendor\workerman\mqtt\src\Protocols\Mqtt.php on line 136
Worker process terminated with ERROR: E_COMPILE_ERROR "Declaration of Workerman\Mqtt\Protocols\Mqtt::input(string $buffer, Workerman\Connection\ConnectionInterface $connection): int must be compatible with Workerman\Protocols\ProtocolInterface::input($recv_buffer, Workerman\Connection\ConnectionInterface $connection) in F:\mqtt\vendor\workerman\mqtt\src\Protocols\Mqtt.php on line 136"
這里粘貼報錯
workerman/mqtt 2.1
workerman/workerman 4.2.1 An asynchronous event driven PHP framework for easily building fast, scalable network ap...
mqtt:2.1
跟workerman:4.2.1
不兼容的,我看mqtt
的composer.json
提交記錄,其中有一條就是加了workerman
的依賴可以是^4.0
,應(yīng)該就是這個導(dǎo)致的。。。如果你的項(xiàng)目只有個這個mqtt
,可以試著升級workerman
到版本5
或者降級mqtt
。
另開一個空目錄,在空目錄里執(zhí)行composer require workerman/mqtt
,再將你的代碼也放進(jìn)去運(yùn)行就可以了