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>

shell 脚本 check_sample.sh 有一些使用 printf/echo 打印的 o/p 当我单击“Click Me”时,我看不到那些 o/p。还有关于如何使其接受文本输入并将其作为 $1 arg 传递的任何指针。脚本也会有所帮助

4

3 回答 3

1

exec 只会给你最后一行......你可能想使用 passthru

<?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或在输出缓冲块中包围 passthru:即:

 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 回答