php实现linux关机重启功能
通过PHP执行Linux关机或重启命令
PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。
使用exec函数执行命令
// 重启命令
exec('sudo reboot');
// 关机命令
exec('sudo shutdown -h now');
配置sudo免密码权限
由于关机/重启需要root权限,需编辑sudoers文件允许www-data用户(或PHP运行用户)无密码执行特定命令:

sudo visudo
添加以下内容(以www-data用户为例):

www-data ALL=(ALL) NOPASSWD: /sbin/reboot
www-data ALL=(ALL) NOPASSWD: /sbin/shutdown
安全注意事项
- 建议通过Web界面添加身份验证机制
- 限制可访问该功能的IP地址
- 最好通过API接口而非直接暴露脚本
完整示例代码
<?php
// 身份验证示例
if ($_POST['password'] === '预设定密码') {
$action = $_POST['action'];
if ($action === 'reboot') {
shell_exec('sudo reboot');
echo "系统正在重启...";
} elseif ($action === 'shutdown') {
shell_exec('sudo shutdown -h now');
echo "系统正在关机...";
} else {
echo "无效操作";
}
} else {
echo "认证失败";
}
?>
替代方案
对于更高安全性要求的环境,可以考虑:
- 编写独立的守护进程监听本地socket
- 使用消息队列系统
- 通过REST API与具有权限的后台服务通信
权限问题排查
如果命令未执行,检查:
- PHP运行用户是否正确(通常为www-data)
- sudoers配置是否正确
- selinux/apparmor是否阻止了操作
- web服务器是否限制了系统命令执行






