这是我迄今为止拥有的代码
站点:
<?php
if ($_POST['action']=="Shutdown") {
$test=shell_exec("touch /scripts/shutdown.sh");
}
?>
shutdown.sh:
#!/bin/sh
if [ -f "/tmp/shutdown" ]
then
rm -f /tmp/shutdown
/sbin/shutdown now
fi
我大概是从http://ubuntuforums.org/但是,当我在本地主机上运行php脚本时,它不会显示吗?
问题:如何使用LAMP服务器通过php站点关闭我的系统
提前感谢!
无需为其创建脚本,只需执行以下操作即可:
shell_exec('sudo /sbin/shutdown -h now');
touch
只更新文件的修改时间,不执行脚本。
您需要做的是向用户提供正在运行的PHP/web服务器进程作为执行shutdown
命令的权限,该权限通常是为根进程而非普通web进程保留的。最好的方法可能是通过sudoers文件,授予用户(可能是www-data
左右)通过exec()
执行sudo shutdown
的权限,而无需密码提示。阅读系统的man sudoers
配置。要非常小心,不要授予超出此范围的权限,或者以其他方式破坏您的sudoers配置。
sudoers文件需要一个条目,如:
www-data ALL=NOPASSWD: /sbin/shutdown
再次阅读man sudoers
以确定您在这里做什么。只使用visudo
来编辑sudoers文件,以确保它不会出错。
然后:
exec('sudo /scripts/shutdown.sh');