当前位置:首页 > PHP

php实现linux关机重启功能

2026-02-27 10:56:20PHP

使用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间接控制

更安全的做法是创建中间脚本:

php实现linux关机重启功能

  1. 创建可执行脚本/usr/local/bin/reboot_server.sh
    #!/bin/bash
    /sbin/shutdown -r now
  2. 设置权限:
    chmod +x /usr/local/bin/reboot_server.sh
    sudo chown root:root /usr/local/bin/reboot_server.sh
  3. 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";
}
?>

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

相关文章

vue实现考试多选功能

vue实现考试多选功能

Vue实现考试多选功能 数据绑定与选项渲染 使用v-model绑定用户选择的答案数组,结合v-for循环渲染选项列表。示例代码: <template> <div>…

vue功能实现难点

vue功能实现难点

Vue 功能实现的常见难点 响应式系统深度监听 Vue 的响应式系统基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3),但对嵌套对象或数组的深层属性变化需要额外…

vue实现复选功能

vue实现复选功能

Vue 实现复选功能 基础实现 使用 v-model 绑定到数组实现多选功能。当复选框被选中时,其 value 会被添加到数组中;取消选中时,会从数组中移除。 <template>…

vue 实现多选功能

vue 实现多选功能

Vue 实现多选功能的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。适用于复选框组(checkbox)或下拉多选(select multi…

vue各种功能实现

vue各种功能实现

Vue 基础功能实现 数据绑定与响应式更新 使用 v-model 实现表单元素与数据的双向绑定,数据变更自动更新视图。 示例: <input v-model="message"> &…

vue添加功能实现

vue添加功能实现

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