【发布时间】:2021-11-30 20:10:52
【问题描述】:
我对 php 很陌生,尽管有一些“diy”编码经验,但我基本上还是个新手!因此,我有一个非常简单的问题......
基本上,我使用了一个装有 Raspberry Pi OS 的树莓派,在车上为长途旅行的孩子们创建了一个迷你媒体服务器。但是,当汽车熄火时,它会立即切断树莓派的电源,这基本上不是问题,但最近损坏了我已经修复的系统。
但正因为如此,我决定添加一个小脚本,允许连接的设备打开网页并单击按钮在切断电源之前关闭 pi。我使用 lighttpd 作为 Web 服务器,并且当我输入 IP 地址并且存在按钮时,我有基本的工作意思是 index.php 页面加载。我的问题是,当我点击按钮时,不是正在执行脚本,而是将脚本的内容打印在屏幕上?!!
要添加,我已按照以下链接中列出的解决方案进行操作: https://superuser.com/questions/829243/how-to-shut-down-a-server-from-the-webinterface
此外,我已将脚本更改为 bash 和 PHP,但未成功(结果相同)。我还将索引从基本的 HTML 页面更改为 PHP 脚本。目前,以下是我用来生成按钮的脚本:
<?PHP
?><!DOCTYPE html>
<html lang="en">
<body>
<form method="post" action="shutdown.sh">
<input type="submit" value="Submit" name="Submit">
</form>
</body>
</html>
脚本是:
#!/bin/bash
echo $("sudo shutdown now");
www-data是visudo中拥有root权限的用户
如前所述,bash 脚本已从原始 python 示例中编辑,我尝试了 PHP...
请注意:这两个文件都在同一个目录中,但我确实将它们分隔在一个用于关闭脚本的子目录中(如示例中所示)...
感谢所有帮助!
【问题讨论】:
-
您是否已将您的网络服务器配置为执行
.sh脚本?您可能需要将其放在cgi-bin目录中。 -
脚本也需要权限才能执行。使用
cgi-bin时,您也必须为这些脚本设置 PATH。 -
感谢您的建议(很可能证明是正确的)。但是,我有其他 bash 和 PHP 脚本运行成功吗?我想知道这是否与不在网络根目录的顶级目录中有关? (我有一个从中运行此页面的子文件夹?)