php实现linux关机重启功能
PHP 实现 Linux 关机/重启功能
PHP 可以通过调用系统命令或使用特定函数实现 Linux 系统的关机或重启操作。以下是几种常见的方法:
方法 1:使用 exec() 或 shell_exec() 函数
通过调用系统命令 shutdown 实现关机或重启。需要确保 PHP 运行用户(如 www-data)有执行权限。
// 关机命令(立即执行)
exec('sudo shutdown -h now');
// 重启命令(立即执行)
exec('sudo shutdown -r now');
方法 2:通过 sudo 免密配置

为避免每次输入密码,需编辑 /etc/sudoers 文件,允许 PHP 用户无密码执行 shutdown 命令。
# 在 /etc/sudoers 中添加以下行(以 www-data 用户为例)
www-data ALL=(ALL) NOPASSWD: /sbin/shutdown
方法 3:使用 PHP 的 system() 函数
// 关机
system('sudo shutdown -h now');
// 重启
system('sudo shutdown -r now');
方法 4:通过 Web 界面安全调用

为增强安全性,建议通过 Web 界面限制操作权限,例如添加 Token 验证或 IP 白名单。
$token = 'YOUR_SECURE_TOKEN';
if ($_GET['token'] === $token && $_SERVER['REMOTE_ADDR'] === 'TRUSTED_IP') {
exec('sudo shutdown -h now');
} else {
echo 'Access denied';
}
注意事项
- 确保 PHP 运行用户有足够的权限(通常需配置
sudo)。 - 直接暴露关机/重启功能存在安全风险,务必添加访问控制。
- 测试前保存所有工作,避免数据丢失。
替代方案
如果无法使用 sudo,可创建一个具有权限的脚本文件,通过 PHP 调用该脚本。例如:
- 创建脚本
/usr/local/bin/safe_shutdown.sh:#!/bin/bash shutdown -h now - 赋予执行权限并设置
setuid:chmod +x /usr/local/bin/safe_shutdown.sh chown root:root /usr/local/bin/safe_shutdown.sh chmod u+s /usr/local/bin/safe_shutdown.sh - PHP 调用脚本:
exec('/usr/local/bin/safe_shutdown.sh');






