我正在使用 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 的问题。
2 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
我刚刚尝试使用您的代码和我的脚本来测试它,如下所示:
printf "$1\n" >> f.txt
有效。唯一的版本是<input type="submit">
提交表格。
莫回无
TA贡献1865条经验 获得超7个赞
如果你把1 2 3结果应该是1 2 3。检查下面的代码
/var/www/html/script.sh
#!/bin/sh
for i in "$*"
do
echo $i
done
测试.php
<?php
if(isset($_POST['submit']))
{
$input = $_POST['submit'];
print exec("sh /var/www/html/script.sh $input");
}
?>
<form action="" method="POST">
<input type="text" name="submit" value="">
</form>
- 2 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消