0

这是我到目前为止的代码

地点:

<?php
if ($_POST['action']=="Shutdown") {
    $test=shell_exec("touch /scripts/shutdown.sh");
}
?>

关机.sh:

#!/bin/sh
if [ -f "/tmp/shutdown" ]
then
   rm -f /tmp/shutdown
   /sbin/shutdown now
fi

我大致从http://ubuntuforums.org/得到了这个想法但是,当我在本地主机上运行 php 脚本时,它没有出现?

问题如何使用 LAMP 服务器通过 php 站点关闭我的系统?

提前致谢!

4

2 回答 2

0

无需为其创建脚本,您只需执行以下操作:

shell_exec('sudo /sbin/shutdown -h now');
于 2013-07-14T19:56:18.833 回答
0

touch只更新文件的修改时间,不执行脚本。

您需要做的是授予用户正在运行的 PHP/Web 服务器进程作为执行shutdown命令的权限,该权限通常保留给 root 而不是普通的 Web 进程。最好的方法可能是通过 sudoers 文件,给用户(可能是这样)在没有密码提示的情况下执行的www-data权限。阅读系统的配置。非常小心不要授予超出此权限的权限,否则会破坏您的 sudoers 配置。sudo shutdownexec()man sudoers

sudoers 文件需要如下条目:

www-data  ALL=NOPASSWD:  /sbin/shutdown

再次阅读man sudoers以确保您在这里做什么。仅用于visudo编辑 sudoers 文件以确保它不会混乱。

然后:

exec('sudo /scripts/shutdown.sh');
于 2013-07-14T19:56:48.307 回答