php实现linux关机重启功能
使用PHP执行Linux关机或重启命令
PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能。但需注意权限问题,通常需要root权限或配置sudo免密。
方法1:直接调用系统命令(需root权限)
确保PHP运行用户(如www-data)有执行权限:

<?php
// 关机命令
exec('shutdown -h now');
// 重启命令
exec('shutdown -r now');
?>
方法2:通过sudo免密配置
编辑sudoers文件(visudo)添加规则:

www-data ALL=(ALL) NOPASSWD: /sbin/shutdown
PHP代码:
<?php
exec('sudo /sbin/shutdown -r now');
?>
方法3:使用Web API间接控制
更安全的做法是创建中间脚本:
- 创建可执行脚本
/usr/local/bin/reboot_server.sh:#!/bin/bash /sbin/shutdown -r now - 设置权限:
chmod +x /usr/local/bin/reboot_server.sh sudo chown root:root /usr/local/bin/reboot_server.sh - PHP调用:
<?php exec('/usr/local/bin/reboot_server.sh'); ?>
安全注意事项
- 避免直接将关机/重启功能暴露给公共网络
- 建议增加IP白名单或身份验证
- 记录操作日志以便审计
- 考虑使用更安全的RPC机制替代直接命令调用
完整示例代码(带基础验证)
<?php
$allowed_ips = ['192.168.1.100'];
$current_ip = $_SERVER['REMOTE_ADDR'];
if(in_array($current_ip, $allowed_ips)) {
// 记录日志
file_put_contents('/var/log/shutdown.log', date('Y-m-d H:i:s')." - Shutdown by $current_ip\n", FILE_APPEND);
// 执行重启
exec('sudo /sbin/shutdown -r +1 "System will reboot in 1 minute"');
echo "System will reboot shortly";
} else {
header('HTTP/1.0 403 Forbidden');
echo "Access denied";
}
?>






