0

私はこれを持っています:

<?php
if ($_GET['run']) {
  # This code will run if ?run=true is set.
  exec("./check_sample.sh");
}
?

<!-- This link will add ?run=true to your URL, myfilename.php?run=true -->
<button type="button" onclick="?run=true">Click Me!</button>

シェル スクリプト check_sample.sh には、printf/echo を使用して出力する o/p がいくつかあります。また、テキスト入力を受け取り、それを $1 arg として渡す方法に関する任意のポインター。スクリプトも役立ちます

4

3 に答える 3

1

exec は最後の行のみを提供します...おそらくパススルーを使用したいでしょう

<?php
if ($_GET['run']) {
  # This code will run if ?run=true is set.
  passthru("./check_sample.sh");
}
?

パラメータを渡すには、次のようにコマンドに追加するだけです。(escapeshellarg は、値のエスケープと引用を処理します)

  passthru("./check_sample.sh ".escapeshellarg($_POST["fieldname"]));

出力を文字列として必要な場合、オプションはpopenを使用するか、出力バッファリング ブロックでパススルーを囲むことです。

 ob_start(); 
 /* passthru call */ 
 $data = ob_get_clean();
于 2013-07-22T05:22:20.240 に答える
1

exec()何も出力しません。を使用できますpassthru()

ユーザー入力を外部プログラムに渡す場合は、十分に注意してください。を使用してエスケープすることを確認してくださいescapeshellarg()

このような種類:

passthru('./check_sample.sh '.escapeshellarg($your_user_input));
于 2013-07-22T05:22:40.713 に答える
0

exec()は最後の行のみをキャッチします。それをキャッチするには、変数を使用する方がよいようです。マニュアルを参照してください。他の選択肢はsystem()shell_exec( ) 、 passthru( )です。どれが適切かは PHP マニュアルで確認できます。

于 2013-07-22T05:24:43.717 に答える