我无法通过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中,并且它保持不变。
谢谢!
答案 0 :(得分:1)
-C <number>
告诉它在消息后退出,否则mosquitto_sub将永远不会返回。如果没有关于给定主题的消息发布,则它将永远不会返回。
有一些真正的php MQTT客户端库,将更适合您尝试执行的操作,例如https://github.com/mqtt/mqtt.github.io/wiki/libraries#php
mosquitto_pub不返回任何内容,因此不会打印任何内容。