为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕码人8056858 2021-11-26 18:03:55
我正在使用 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">提交表格。


查看完整回答
反对 回复 2021-11-26
?
莫回无

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>


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信