我有尝试像system(reboot)
exec(reboot)
和system("/ect/init.d/networking restart");
一些命令,但没有发生什么可以用PHP重启linux服务器或重启dhcp吗?
我该怎么办?
我有尝试像system(reboot)
exec(reboot)
和system("/ect/init.d/networking restart");
一些命令,但没有发生什么可以用PHP重启linux服务器或重启dhcp吗?
我该怎么办?
你有你的Apache用户添加到与NOPASSWD sudoers文件,并只给访问即重新启动,然后运行系统(“命令重启”);
对于sudoersfile:
www-data reboot = NOPASSWD: /sbin/reboot
这将使Apache访问重新启动服务器,但rememer该系统上的所有用户,然后就可以重新启动。
试试这个:
<?php
shell_exec("/usr/sbin/reboot");
exec("/usr/sbin/reboot");
system("/usr/sbin/reboot");
?>
详情请看:
如果你想通过PHP的Apache和CGI版本要做到这一点 - 那么答案没有”。 PHP将以与apache相同的用户身份执行,并且允许此用户访问您的系统将是非常危险的。
也许你的PHP解释器没有运行具有合适的权限来做到这一点的用户。通常这些都需要以root身份完成,这对于PHP来说是一个坏主意,因为一个小的安全漏洞可能会让整个机器受到威胁。
如果你真的想要做到这一点,我会建议看看使用sudo授予有限的额外访问权限的网络服务器运行的用户。
另一替代须藤在某些系统是DBUS。使用正确的dbus权限,您可以发送指令以重新启动例如
dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
从命令行工作,我相信有dbus绑定可用于PHP。
为everyboy说,这是相当危险的。最好使用一些ssh会话来重启/重启你的服务器/服务。
在这种情况下你还是想这样做,给你运行apache用户(www)的sudo的权利。
在RHEL我不得不评论这需要在sudoers的配置文件中的tty行:
#Defaults requiretty
是不是在/ sbin目录重新正常启动? – Flexo 2010-10-29 11:54:41
@awoodland你是对的,已更改 – infinity 2010-10-29 11:57:22
在我的测试系统上至少是/ sbin/reboot,而不是/ usr/sbin/reboot。 FHS(http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINSYSTEMBINARIES)意味着这也是正确的地方。 – Flexo 2010-10-29 12:02:07