当用户输入是多个单词时,PHP 不执行 bash 脚本

我正在使用 PHP 的 exec 函数来执行 bash 脚本。


<?php


 if(isset($_POST['submit']))

 {

   $input = $_POST['submit'];

   exec("sudo -u root sh /var/www/html/script.sh '$input'");

 }

?>


<form action="" method="POST">

<input type="text" name="submit" value="">

</form>

如您所见,exec 命令依赖于用户输入。当用户的输入只有一个词时,一切正常,bash 脚本接收输入。但是,当用户输入多个单词时,PHP 不会运行 exec 命令。当从命令行运行时,PHP 正在执行的完全相同的命令在多个单词的情况下工作得非常好,所以这绝对是 PHP 的问题。


慕码人8056858
浏览 142回答 2
2回答

慕尼黑8549860

我刚刚尝试使用您的代码和我的脚本来测试它,如下所示:printf&nbsp;"$1\n"&nbsp;>>&nbsp;f.txt有效。唯一的版本是<input type="submit">提交表格。

莫回无

如果你把1 2 3结果应该是1 2 3。检查下面的代码/var/www/html/script.sh#!/bin/shfor i in "$*"do&nbsp; &nbsp;echo $idone测试.php<?php&nbsp;if(isset($_POST['submit']))&nbsp;{&nbsp; &nbsp;$input = $_POST['submit'];&nbsp; &nbsp;print exec("sh /var/www/html/script.sh $input");&nbsp;}?><form action="" method="POST"><input type="text" name="submit" value=""></form>
打开App,查看更多内容
随时随地看视频慕课网APP