PHP system()、exec()、shell_exec()などを介してmosquitto_subまたはpubコマンドを実行できません。
他のコマンド(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変数は1行です。)
PS:$ cmdをエコーして、それをシェルに直接コピー/貼り付けしようとしましたが、変更されていません。
ありがとう!
mosquitto_subは、-C <number>
を使用してメッセージの後に終了するように指示しない限り、返されません。指定されたトピックについて公開されたメッセージがない場合、メッセージは返されません。
https://github.com/mqtt/mqtt.github.io/wiki/libraries#phpなど、実行しようとしていることに適した実際のphpMQTTクライアントライブラリがあります。
mosquitto_pubは何も返さないため、印刷するものはありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加