我有一个 php 脚本,它可以更改/etc/network/interfaces 文件中的 ip 地址。
编辑文件后,我正在使用 exec("sudo ifdown eth0)
exec(sudo ifup eth0)
刷新配置。
它有效,但需要将近 40 秒。
我想将用户重定向到新的 ip 地址,方法是:
header("Location: http://$ip/?page=networkSettings");
只有在我注释掉 exec 调用时,重定向本身才有效。 (当然我得到“无法连接错误”)
否则网络浏览器显示: 等待 192.168.0.50
我使用了php的sleep函数但是没有效果。
有人知道如何解决这个问题吗?
最佳答案
您需要使用其他一些方法来发出重定向。由于服务器的 IP 地址在脚本运行时发生变化,这会导致连接中断——客户端永远不会收到 Location header 。
我见过许多嵌入式设备使用的一种方法是延迟重定向。让您的页面显示一个包含 meta refresh 的结果页面到新地址,然后更改机器的 IP。设置刷新超时,以便在超时到期并且客户端重定向到新 IP 时,机器应该有其新 IP 并正常工作。
关于php ip地址重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268186/