我有这个:
<?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传递。脚本也会有所帮助
答案 0 :(得分: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:ie:
ob_start();
/* passthru call */
$data = ob_get_clean();
答案 1 :(得分:1)
exec()
没有输出任何内容。您可以使用passthru()
。
非常小心将用户输入传递给外部程序。如果你确实使用escapeshellarg()
确保逃避它。
有点像这样:
passthru('./check_sample.sh '.escapeshellarg($your_user_input));
答案 2 :(得分:0)
exec()只捕获最后一行,似乎你最好使用变量来捕获它。见手册。其他选择是system(),shell_exec(),passthru(),您可以通过PHP手册找到合适的选项。