如何运行由 html 表单提示的 bash 脚本?

如何运行由 html 表单提示的 bash 脚本?

我目前的做法是使用 PHP exec

<?php

$filename = "log.txt";
$text = $_POST['form'];

$fp = fopen ($filename, "w");
if ($fp) {
    fwrite ($fp, $text);
    fclose ($fp);
    exec('/var/www/html/bash.sh');
header('Location: /next.html');
}
else {
    echo ("ERROR.");

}

?>

所以我知道脚本至少在运行,因为它可以正常写入 log.txt,但据我所知,bash.sh 中实际上没有任何内容在运行。如果我在命令行上运行

“exec sudo bash /full/path/bash.sh”

然后它就可以正常执行了。我不确定这是权限错误还是其他什么。我做错了什么,还是有更好的方法?在此先感谢您的帮助。

答案1

这里至少存在三个问题:

  • 代码将表单内容写入名为log.txt(在某个未知目录中)的文件中,然后执行不相关的/var/www/html/bash.sh
  • 代码运行时/var/www/html/bash.sh无需指定解释器,因此它依赖于脚本中的适当shebang(并且您的外部测试指定了解释器:sudo bash ...
  • 该脚本使用服务器的 id(www-data 或类似的东西)运行,而不是使用 root 运行。

相关内容