【发布时间】:2015-08-18 22:56:02
【问题描述】:
我正在尝试使用 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拥有所有权利
也许你们知道为什么它不会被执行。
提前致谢
【问题讨论】:
-
你如何通过 shell 执行它?
shell wakenas.sh?你能把ls -l /path/to/wakenas.sh的输出放上去吗 -
with
sh /path/to/wakenas.shls -l wakenas.sh:-rwxrwxrwx 1 www-data www-data 126 Jun 4 12:47 wakenas.sh -
你的脚本对我来说似乎是正确的,尝试
var_dump(shell_exec("/var/www/html/wakenas.sh &"));看看它是否返回NULL(php.net/manual/en/…) 并检查你/var/www/html/works.txt文件内容 -
最后一件事,
ls -l /var/www/html/works.txt -
我根据您的用例猜测,您可能是通过 apache 之类的 Web 服务器访问 php? apache 用户(通常是
nobody、www-data或apache2)是否有权执行wakenas.sh?请注意,如果对页面有任何公共访问权限,则不应授予对 Web 服务器的 shell 访问/执行权限。