我想知道是否可以使用PHP脚本重启Linux服务器?与将IP地址从静态更改为DHCP相关,我需要重新启动系统才能使其生效。
我试过这段代码:
system("/usr/bin/reboot");
错误信息是:
重启:必须是useruser
这是另一个:
system('/etc/init.d/network restart');
错误是:
关闭环回界面:[FAILED]打开环回界面:[FAILED]
希望你能帮助我。
谢谢!
关心所有人。
答案 0 :(得分:3)
如果解释器,webserver的 program-users-context 有权执行这些命令,则可以重新启动它。不应以root身份运行网络服务器或php解释器 。您可以使用sudo, sudoers
升级这两种情况下的权限。
答案 1 :(得分:2)
你需要像这样使用sudo:
system("sudo /usr/bin/reboot");
你的/ etc / sudoers中的添加以下内容:
apache ALL=(ALL) NOPASSWD: /usr/bin/reboot
其中apache
是PHP脚本运行的用户名。
请注意执行此操作的安全措施 - 任何有权访问服务器上的PHP脚本以重新启动服务器的人。
答案 2 :(得分:1)
关于将IP地址从静态更改为DHCP,我需要重启系统
不,不。这不是Microsoft Windows。但重新映射网络接口的命令因分发而异 - 您不会说这是什么。同样,访问reboot,shutdown,init和telinit命令因分发而异。
我在本地服务器
工作
那么为什么不通过ssh或在控制台上进行呢?
答案 3 :(得分:0)
既然你已经说过你是Linux的新手,我觉得值得注意的是,与Windows相比,需要重新启动Linux机箱的情况要少得多 。< / p>
即使更新了核心软件包,也不需要重启。即使出现严重崩溃的情况,您也可以在没有重启的情况下进行恢复。
你还没有说明为什么你想要重新启动,但重启整个盒子真的应该是绝对的最后手段。事实上,重新启动只是为了清除问题,这对于Linux管理员来说是非常糟糕的做法,因为它往往会消除导致问题的原因的证据,并且无法阻止问题再次发生。
在Linux上,大多数需要重新启动Windows框的问题只需要重新启动单个程序或服务。
最后,关于安全性的说明:通过PHP程序执行此类主要系统操作是不好的安全措施,因为它向非root用户公开了根级别功能。我假设(好吧,我希望!)你打算锁定对这个PHP页面的访问,但即使是最好的安全网页也不应该被认为足够安全,无法运行根级操作
简而言之,我的建议是你不应该这样做。如果必须这样做,@ qbert220的答案应该有效,但请不要这样做。
[编辑] 特别是将IP地址从DHCP更改为静态,这不应要求在Linux中重新启动服务器。您只需重新启动网络接口即可。
一旦你更改了配置,这样的东西就足以重新启动你的网络接口并使用新的IP地址:
sudo /etc/init.d/networking restart
您尚未指定您正在使用的Linux种类,但此处是指向详细信息how to do it from the commandline in Ubuntu的页面的链接。
它确实需要root权限,所以你需要使用sudo
来实现它并将你的web用户添加到sudoers列表,正如我之前所说的那样从安全的角度来看真的不是很好
答案 4 :(得分:0)
脚本必须设置为以root身份运行:
reboot.php
<?php
exec("reboot -d -f -i");
?>
将它作为根脚本:
chown root.root reboot.php
chmod 700 reboot.php
但是为什么用php这个呢?只需像这样制作一个脚本:
#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
reboot -d -f -i