我正在尝试通过一个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
拥有所有权限。
也许你们知道为什么它不能被执行。
提前感谢您的帮助。
sh /path/to/wakenas.sh
命令ls -l wakenas.sh:-rwxrwxrwx 1 www-data www-data 126 Jun 4 12:47 wakenas.sh
- Gutz-Pilzvar_dump(shell_exec("/var/www/html/wakenas.sh &"));
查看它是否返回NULL
(http://php.net/manual/en/function.shell-exec.php#refsect1-function.shell-exec-returnvalues),并检查/var/www/html/works.txt
文件的内容。 - smarberls -l /var/www/html/works.txt
。 - smarbernobody
,www-data
或apache2
)是否有权执行wakenas.sh
? 请注意,如果该页面存在_任何_公共访问权限,则不应将shell访问/执行权限授予您的Web服务器。 - vastlysuperiorman