使用PHP更改服务器的IP地址

我需要能够使用PHP更改服务器的IP地址。 我试图使用ifconfig eth0 down作为www-data用户,以确保它将工作。 到目前为止,我已经摆脱/ var / run / network / ifstate文件的权限问题,但现在我得到一个权限被拒绝的行,读取SIOCSIFFLAGS: Permission denied 。 有没有解决的办法? 如果没有,如何更改网页中服务器的IP地址?

php代码:

 //if the ip has changed, bring down the network interface and bring it up with the new IP if($ipConf != $ip) { $ifdownSuccess = exec("ifconfig eth0 down", $downOutput, $downRetvar); $ifupSuccess = exec("ifconfig eth0 up ".$ip, $upOutput, $upRetvar); //TODO: check for ifupSucess and revert to old ip if the command failed var_dump($downOutput); var_dump($downRetvar); var_dump($ifdownSuccess); var_dump($upOutput); var_dump($upRetvar); var_dump($ifupSuccess); } 

收益:

 array(0) { } int(127) string(0) "" array(0) { } int(127) string(0) "" 

有没有办法解决这个权限问题或另一个工具,我可以用来做到这一点?

Solutions Collecting From Web of "使用PHP更改服务器的IP地址"

我有一个类似的问题,正在考虑以下解决方案:

1)PHP页面读取IP,网络掩码和网关,检查格式是否正确以及IP是否可行并将其写入文本文件

2)cronjob写在任何东西,寻找该文件,如果它在那里,它读取内容,解析它,并进行更改

这应该足够安全。

我明白了这一点。 答案是用usermod -a -G admin www-data添加www-data用户(或者你的服务器用户的名字)到管理员组。 如果你看看/etc/sudoers ,你会注意到这个组中的任何人都可以使用sudo -n <command>来执行sudo命令而不需要密码提示。 做了一个快速的代码更改:

 //if the ip has changed, bring down the network interface and bring it up with the new IP if($ipConf != $ip) { $ifdownSuccess = exec("sudo -n ifconfig eth0 down", $downOutput, $downRetvar); $ifupSuccess = exec("sudo -n ifconfig eth0 up ".$ip, $upOutput, $upRetvar); //TODO: check for ifupSucess and revert to old ip if the command failed var_dump($downOutput); var_dump($downRetvar); var_dump($ifdownSuccess); var_dump($upOutput); var_dump($upRetvar); var_dump($ifupSuccess); } 

我现在在做生意 能够通过SSH连接新的IP地址,并通过新的IP查看网页。