Как установить php mqtt?
Летом 2023 устанавливал php-mqtt/client нормально, через composer
composer require php-mqtt/client.
Он нормально устанавливался и работал. Сейчас вновь понадобилось его использовать, но на этот раз при попытке выполнить эту команду сначала вижу, что гит хаб требует мой токен, а после вызывает совсем из другог url
The "https://api.github.com/repos/php-mqtt/mqtt" file could not be downloaded (HTTP/2 404 ):
{"message":"Not Found","documentation_url":"https://docs.github.com/rest/repos/repos#get-a-repository"}
Хотя должен брать из "https://api.github.com/repos/php-mqtt/client"
Я залез в composer.json там выставил репозиторий
"repositories": [
{
"type": "package",
"package": {
"name": "php-mqtt/client",
"version": "dev-master",
"dist": {
"url": "https://api.github.com/repos/php-mqtt/client/zipball/master",
"type": "zip"
}
}
}
]
Далее попробовал установить, вывелась такая проблема:
Problem 1
- Root composer.json requires PHP extension ext-mosquitto-php * but it is missing from your system. Install or enable PHP's mosquitto-php extension.
Problem 2
- Root composer.json requires php-mqtt/laravel-client ^1.3 -> satisfiable by php-mqtt/laravel-client[v1.3.0].
- php-mqtt/laravel-client v1.3.0 requires php-mqtt/client ^1.3.0 -> satisfiable by php-mqtt/client[v1.3.0, ..., v1.8.1] from composer repo (https://repo.packagist.org) but php-mqtt/client[dev-master] from package repo (defining 1 package) has higher repository priority. The packages from the higher priority repository do not match your constraint and are therefore not installable. That repository is canonical so the lower priority repo's packages are not installable. See https://getcomposer.org/repoprio for details and assistance.
После этого по советам с разных сайтов провел такую серию команд:
sudo apt-get install php-dev libmosquitto-dev
sudo pecl install Mosquitto-alpha
sudo echo "extension=mosquitto.so" >> /etc/php/8.1/cli/php.ini
sudo service php8.1-fpm restart
composer update --with-all-dependencies
И после этого выводится такая ошибка:
PHP Warning: PHP Startup: Unable to load dynamic library 'mosquitto.so' (tried: /usr/lib/php/20210902/mosquitto.so (/usr/lib/php/20210902/mosquitto.so: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/mosquitto.so.so (/usr/lib/php/20210902/mosquitto.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'mosquitto.so' (tried: /usr/lib/php/20210902/mosquitto.so (/usr/lib/php/20210902/mosquitto.so: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/mosquitto.so.so (/usr/lib/php/20210902/mosquitto.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'mosquitto.so' (tried: /usr/lib/php/20210902/mosquitto.so (/usr/lib/php/20210902/mosquitto.so: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/mosquitto.so.so (/usr/lib/php/20210902/mosquitto.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Использую laravel. При попытке выполнить запрос к api возвращается такой ответ
<!--
Error: Class "Mosquitto\Client" not found in file /var/www/SmartHome/public/php/mqttCreateTopic.php on line 6
При вот таком коде:
<?php
use \Mosquitto\Client;
function createRoomTopic($roomId): void
{
$mqtt = new Client();
$mqtt->setCredentials(env("MQTT_AUTH_USERNAME"), env("MQTT_AUTH_PASSWORD"));
$mqtt->connect(env("MQTT_HOST"), env("MQTT_PORT"));
$mqtt->publish("room/123/actions", "Test", 2, true);
}