2017-01-14 16 views
2

私はRaspberry PI(Jessi)を使用して、シリアルポート(USBからシリアルポート)を使用してデバイスに16進文字列を送信しています。 私は、コマンドラインから成功し、次のコマンドを使用します。PHPからの16進数のシリアルポートへの書き込み

echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0 

私は同じラズベリーパイの上にPHPを使用して同じことをしたいが、私はPHPファイルから同じコマンドを送信しようとすると、私は得ることはありません希望の結果。 例PHPコード:の/ dev/ttyUSB0のため

  • 私が追加したWWW-データ(PHPユーザ)グループダイヤルアウト(グループへ:

    var_dump(shell_exec('echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0')); 
    

    私はこの作業を取得するために多くのことを試してみました)

  • 私はPHPでは、/ dev/ttyUSB0に書き込むことができることを確認したの/ dev/ttyUSB0
  • のためのchmod 777を設定している(is_writable())
  • は、私は別のsttyの設定の多くを試してみました(例:sttyの-F/de私は、シリアルポート(PhpSerialライブラリ、pack()、fwrite()、printf()など)に書き込むためにPHPでさまざまな方法を試しました。 とりわけ、

私はPHPでは、/ dev/ttyUSB0(スクリーン、minicomの)に書き込んでいるまさに参照する方法を発見していないが、私はPHPスクリプト次回を試した後、私からしてみてくださいので、私はそれが何かを知っていますコマンドラインは動作しません。 2度目は、PHPから試した後、コマンドラインからの試行が成功しました。

コマンドライン(CLI、PHP5とPHP7の両方)からPHPファイルを実行しようとしましたが、Webサーバーを使用していますが、何も動作しません。

私は考えることができ、オンラインで見つけられたすべてのことを試しましたが、まだそれを動作させることはできません。

この問題の原因は何ですか? コマンドが機能し、PHPを使用して実行したいだけですが、失敗します。その他のコマンドは、私は、作品PHPを使用して、試してください - 例えば:

var_dump(shell_exec('whoami')); 

更新#1 私が働いてコマンドを使用して、bashスクリプトファイルを作成し、また戻っていくつかの出力を得るために「OK」エコーを追加しました。このファイルはコマンドラインから実行すると動作しますが、PHPから実行しようとすると "ok"が返されますが、接続されたデバイスにはまだ失敗します。 私はWWW-データユーザとしてコマンドラインからbashスクリプトを実行しようとしましたが、それは動作しますが、まだ私はPHPを使用してください何も動作:アップデート#2 は別で同じことをしようとしました

sudo -u www-data bash -c '/home/test/cmd' 

コンピュータ、コディを実行して、同じ否定的な結果。コマンドは機能しますが、PHPを使用して実行すると動作しません。

答えて

0

同様の問題が発生しました。私が最終的に把握したのは、ユーザーのhttpd(CentOSを実行しています - あなたのLinuxの好みによってApacheのユーザーが異なるかもしれません)が/ dev/ttyS0への書き込み権限を持っていないということでした。

//補助金は、それがどのように把握するために、もう少しエレガントになると思いは/ dev/ttyS0の

ワットの/ dev/ttyS0の

すべてのユーザーにはsudo chmodコマンドのA +の許可を書きますマシン上のすべてのユーザーではなく、httpdユーザーのみに書き込み許可を与えることができます。

これがあなたを助けてくれることを願っています!

+0

上記のように私は/ dev/ttyUSB0のchmod 777を試してみました。書き込み権限は私の問題ではありませんでした。 – AxAn

関連する問題