Не могу запустить команды Mosquitto в PHP - PullRequest
0 голосов
/ 30 июня 2018

Я не могу запустить команды mosquitto_sub или pub через систему PHP (), exec (), shell_exec () и т. Д.

Другие команды (например, hostname и ls) будут отображаться и работать нормально. Я что-то упускаю?

Вот что у меня есть:

<?php 

$message = '{"state":{"desired":{"LED":"ON"}}}';
$cmd = "mosquitto_pub --cafile /var/www/subsystem/crt/rootCA.pem --cert 
/var/www/subsystem/crt/crt.pem --key /var/www/subsystem/crt/private.pem -h 
myendpoint.amazonaws.com -p 8883 -t '" . "$" . 
"aws/things/LED/shadow/update' -m '" . $message . "'";

echo system($cmd); 

?>

(я знаю, что строка не будет правильно разбираться с отступом, и в моем PHP-файле переменная $ cmd представляет собой одну строку.)

PS: Я также попытался повторить $ cmd и скопировать / вставить это прямо в оболочку, и это работает без изменений.

Спасибо!

1 Ответ

0 голосов
/ 30 июня 2018

mosquitto_sub никогда не вернется, если вы не используете -C <number>, чтобы сообщить ему, что нужно выходить после сообщений. Если по данной теме не опубликовано ни одного сообщения, оно никогда не вернется.

Существуют настоящие клиентские библиотеки php MQTT, которые лучше подходят для того, что вы пытаетесь сделать, например. https://github.com/mqtt/mqtt.github.io/wiki/libraries#php

mosquitto_pub ничего не возвращает, поэтому печатать нечего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...