我正在尝试使用 php/html
按钮执行 bash 脚本来唤醒我的 nas。
<form action="" method="POST">
<input type="submit" value="Wake NAS" name="zero" />
</form>
<?php
if (isset($_POST["zero"])){
#echo "Hello World!";
shell_exec("/var/www/html/wakenas.sh &");
}?>
按下按钮时打印“Hello World”。
但代码不会被执行。
wakenas.sh
看起来像这样,如果我通过 shell 执行它就可以工作
#!/bin/bash
etherwake -D "BC:5F:F4:09:E1:07"
echo "why!?!?!" > "/var/www/html/works.txt"
exit 1
wakenas.sh
拥有所有权利
也许你们知道为什么不执行。
提前致谢
最佳答案
执行脚本的简单而安全的方法是输入 sudoers。假设您的 Linux 发行版是 Debian base,并且运行 Web 服务器的用户是 www-data
,那么您可以创建一个文件,例如 /etc/sudoers.d/wakeup_ether
Cmnd_Alias WAKE_UP_CMD = /var/www/html/wakenas.sh
www-data ALL=NOPASSWD: WAKE_UP_CMD
修改您的脚本以在命令前添加 sudo
。
shell_exec("sudo /var/www/html/wakenas.sh &");
关于php - 用php执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641991/