无法在PHP中运行Mosquitto命令

时间:2018-06-30 12:50:52

标签: php mqtt

我无法通过PHP system(),exec(),shell_exec()等运行mosquitto_sub或pub命令。

其他命令(例如主机名和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并将其直接复制/粘贴到shell中,并且它保持不变。

谢谢!

1 个答案:

答案 0 :(得分:1)

除非您使用-C <number>告诉它在消息后退出,否则

mosquitto_sub将永远不会返回。如果没有关于给定主题的消息发布,则它将永远不会返回。

有一些真正的php MQTT客户端库,将更适合您尝试执行的操作,例如https://github.com/mqtt/mqtt.github.io/wiki/libraries#php

mosquitto_pub不返回任何内容,因此不会打印任何内容。