可以使用PHP重新启动linux服务器或重新启动dhcp吗?

可以使用PHP重新启动linux服务器或重新启动dhcp吗?,php,system,Php,System,我尝试了一些命令,如system(reboot)exec(reboot) 和系统(“/ect/init.d/networking restart”) 但不会发生什么事 我该怎么办?试试这个: <?php shell_exec("/usr/sbin/reboot"); exec("/usr/sbin/reboot"); system("/usr/sbin/reboot"); ?> 有关更多详细信息,请参见此处: 如果您试图通过apache和PHP的CGI版本实现这一点,那么答案是

我尝试了一些命令,如
system(reboot)
exec(reboot)
系统(“/ect/init.d/networking restart”)
但不会发生什么事

我该怎么办?

试试这个:

<?php
shell_exec("/usr/sbin/reboot");
exec("/usr/sbin/reboot");
system("/usr/sbin/reboot");
?>

有关更多详细信息,请参见此处:


如果您试图通过apache和PHP的CGI版本实现这一点,那么答案是“否”。PHP将以与apache相同的用户身份执行,让该用户访问您的系统将是极其危险的。

可能您的PHP解释器没有以具有适当权限的用户身份运行。通常情况下,这些都需要以root用户的身份完成,这对于PHP来说是个坏主意,因为一个小的安全漏洞可能会导致整个机器受到威胁

如果您真的想这样做,我建议您考虑使用sudo为web服务器运行的用户授予有限的额外访问权限

在某些系统上,sudo的另一个替代方案是dbus。使用正确的dbus权限,您可以发送重新启动的指令,例如:

dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

从命令行开始工作,我相信php可以使用dbus绑定。

正如everyboy所说,这是非常危险的。最好使用一些ssh会话来重新启动/重启服务器/服务


如果您仍然想这样做,请授予您的apache运行用户(www)sudo权限。

您必须使用NOPASSWD将apache用户添加到sudoers,并且只授予访问权限,即重新启动,然后运行系统(“sudo reboot”)

对于sudoersfile:

www-data reboot = NOPASSWD: /sbin/reboot

这将使apache能够重新启动您的服务器,但请记住,系统上的所有用户都可以重新启动。

在RHEL上,我不得不对需要tty的sudoers配置文件行进行注释:

#Defaults requiretty

在我的测试系统上,至少是/sbin/reboot,而不是/usr/sbin/reboot。FHS()意味着这也是正确的地方。