php - 用php执行shell命令

标签 php bash shell

我正在尝试使用 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 &");

引用:https://help.ubuntu.com/community/RootSudo

关于php - 用php执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641991/

相关文章:

php - SQL - 复杂的 JOIN 查询

linux - sudo 还是不 sudo?

bash - zsh 循环多个参数

linux - 如何创建一个正常运行的程序?因为我的程序永远运行,不会停止

shell - 如何写值1 || shell 中的值2?

python - 从 shell 输出中过滤特殊字符,例如颜色代码

javascript - Bootstrap 表单不会在点击时提交

php - 将 PHP 响应输出为 XML

php - MySQL 使用上次打开的连接

linux - 如何将 telnet 控制台日志重定向到文件 Linux