プログラムパスがあります: /usr/src/myappMamou/apps/myapp
コマンドラインで、最初にプログラム myapp を起動した後、次のようなプログラムを実行するコマンドを入力できます: send arg1 arg2 arg3
このように、プログラムは正常に実行できます
これで、PHP で上記の関数を完了したい場合は、毎回コマンドラインにコマンドを入力する必要はありません: send arg1 arg2 arg3 も同じ効果を達成できます
PHP は以下の通りです:
$fixedcmd="send 123456063 10000 1111111"; $ph="/usr/src/myappMamou/apps/myapp"; $rs = popen(\"$ph\" \"$fixedcmd\", "r" ); pclose($rs);
1. phpはコマンドラインで実行されるのか、CGIで実行されるのか、また/usr/src/myappMamou/apps/myappを実行する権限があるかどうか
2. 「まず」 「プログラム myapp を開始します」は、このプログラムは個別に開始されることを意味しますか? send arg1 arg2 arg3 間の関係のスクリーンショットを見せていただけますか
3. myapp を起動するとき、現在のパスは特定の場所にある必要がありますか?
1. php はコマンドラインまたは CGI を通じて実行されますか? /usr/src/myappMamou/apps/myapp を実行する権限がありますか?
2. 「最初にプログラム myapp を起動します」とは、このプログラムが個別に起動されることを意味しますか? send arg1 arg2 arg3 間の関係のスクリーンショットを見せていただけますか
3. myapp を起動するとき、現在のパスは特定の場所にある必要がありますか?
1. PHP は Apache で実行され、権限を持っています
2. 「最初にプログラム myapp を開始する」とは、./myapp などのコマンドラインでプログラムを開始し、次にプログラム myapp> を入力することを指します
入力されたコマンドたとえば、send arg1 arg2 arg3、send はコマンドで、他の 3 つはパラメータです
3. myapp を実行して開始するとき、現在のパスは特定の場所にある必要がありますか? /usr/src/myappMamou の下でのみ実行できます。 /apps.これを行う必要がありますか? これはシステムコマンドのように機能します。つまり、どこにでもコマンド myapp を入力してプログラムを開始します
教えてください
コマンド myapp を任意の場所で実行する必要があります。 myapp のパスを $PATH に追加するには? この方法で、システムは myapp のパスを認識できるようになりますが、試してみましたが、うまくいきませんでした
$rs = Popen(" $ph" "$fixedcmd", "r" ); ? ? ?
とにかく書かなければなりません
$rs = Popen("$ph $fixedcmd", "r" );
さあ
このようにテストしてみてはどうでしょうか
<?php$descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to);$cwd = '/usr/src/myappMamou/apps';$process = proc_open('myapps', $descriptorspec, $pipes, $cwd);if (is_resource($process)) { // $pipes now looks like this: // 0 => writeable handle connected to child stdin // 1 => readable handle connected to child stdout // Any error output will be appended to /tmp/error-output.txt $fixedcmd="send 123456063 10000 1111111"; fwrite($pipes[0], $fixedcmd); fclose($pipes[0]); echo stream_get_contents($pipes[1]); fclose($pipes[1]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); echo "command returned $return_value\n";}