当前位置:首页 > PHP

php实现linux关机重启功能

2026-04-02 19:43:04PHP

PHP 实现 Linux 关机/重启功能

PHP 可以通过调用系统命令或使用特定函数实现 Linux 系统的关机或重启操作。以下是几种常见的方法:

方法 1:使用 exec()shell_exec() 函数

通过调用系统命令 shutdown 实现关机或重启。需要确保 PHP 运行用户(如 www-data)有执行权限。

// 关机命令(立即执行)
exec('sudo shutdown -h now');

// 重启命令(立即执行)
exec('sudo shutdown -r now');

方法 2:通过 sudo 免密配置

php实现linux关机重启功能

为避免每次输入密码,需编辑 /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 界面安全调用

php实现linux关机重启功能

为增强安全性,建议通过 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 调用该脚本。例如:

  1. 创建脚本 /usr/local/bin/safe_shutdown.sh
    #!/bin/bash
    shutdown -h now
  2. 赋予执行权限并设置 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
  3. PHP 调用脚本:
    exec('/usr/local/bin/safe_shutdown.sh');

标签: 重启功能
分享给朋友:

相关文章

vue 实现单选功能

vue 实现单选功能

实现单选功能的方法 在Vue中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML单选按钮 通过v-model绑定数据,结合原生<input type="radio"&g…

php实现回复功能

php实现回复功能

实现回复功能的基本步骤 在PHP中实现回复功能通常涉及数据库操作、表单处理和前后端交互。以下是实现回复功能的关键步骤: 数据库设计 创建包含回复数据的表结构,例如: CREATE TABLE re…

vue实现弹窗功能

vue实现弹窗功能

实现基础弹窗组件 在Vue中创建弹窗通常需要定义一个组件,利用v-if或v-show控制显示隐藏。以下是一个基础弹窗组件的实现: <template> <div class="…

vue 实现拖拽功能

vue 实现拖拽功能

Vue 实现拖拽功能的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现置顶功能

vue实现置顶功能

实现置顶功能的基本思路 在Vue中实现置顶功能通常涉及对数据列表的操作,通过调整数组元素的顺序或添加标识属性来实现。以下是几种常见方法: 方法一:通过数组排序实现 利用数组的sort方法,根据元素的…

vue添加功能实现

vue添加功能实现

Vue 功能实现方法 添加组件 在 Vue 项目中创建新组件,通常位于 components 目录下。使用单文件组件(SFC)格式,包含 <template>、<script>…