• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP更改hosts文件的方法

php 搞代码 4年前 (2022-01-22) 17次浏览 已收录 0个评论

本文主要介绍PHP实现更改hosts文件的方法,结合具体实例形式分析了php操作hosts文件的相关读取、设置、删除等实现技巧,需要的朋友可以参考下,希望能帮助到大家。

有这样一个需求,我有多个网址希望在不同的时候对应不同的 ip,如果一个个配 hosts,这工作显得有些繁琐。写了如下脚本来批量更改。

<?phpdefine('HOST_FILE', 'C:\Windows\System32\drivers\etc\hosts');$hm = new HostManage(HOST_FILE);$env = $argv[1];if (empty($env)) {    $hm->delAllGroup();} else {    $hm->addGroup($env);}class HostManage {    // hosts 文件路径    protected $file;    // hosts 记录数组    protected $hosts = array();    // 配置文件路径,默认为 __FILE__ . '.ini';    protected $configFile;    // 从 ini 配置文件读取出来的配置数组    protected $config = array();    // 配置文件里面需要配置的域名    protected $domain = array();    // 配置文件获取的 ip 数据    protected $ip = array();    public function __construct($file, $config_file = null) {        $this->file = $file;        if ($config_file) {          $this->configFile = $config_file;        } else {          $this->configFile = __FILE__ . '.ini';        }        $this->initHosts()            ->initCfg();    }    public function __destruct() {        $this->write();    }    publ<b>%本文@来源gao@!dai!ma.com搞$$代^@码!网</b><strong>搞代gaodaima码</strong>ic function initHosts() {        $lines = file($this->file);        foreach ($lines as $line) {            $line = trim($line);            if (empty($line) || $line[0] == '#') {                continue;            }            $item = preg_split('/\s+/', $line);            $this->hosts[$item[1]] = $item[0];        }        return $this;    }    public function initCfg() {        if (! file_exists($this->configFile)) {            $this->config = array();        } else {            $this->config = (parse_ini_file($this->configFile, true));        }        $this->domain = array_keys($this->config['domain']);        $this->ip = $this->config['ip'];        return $this;    }    /**     * 删除配置文件里域的 hosts     */    public function delAllGroup() {        foreach ($this->domain as $domain) {            $this->delRecord($domain);        }    }    /**     * 将域配置为指定 ip     * @param type $env     * @return \HostManage     */    public function addGroup($env) {        if (! isset($this->ip[$env])) {            return $this;        }        foreach ($this->domain as $domain) {            $this->addRecord($domain, $this->ip[$env]);        }        return $this;    }    /**     * 添加一条 host 记录     * @param type $ip     * @param type $domain     */    function addRecord($domain, $ip) {        $this->hosts[$domain] = $ip;        return $this;    }    /**     * 删除一条 host 记录     * @param type $domain     */    function delRecord($domain) {        unset($this->hosts[$domain]);        return $this;    }    /**     * 写入 host 文件     */    public function write() {        $str = '';        foreach ($this->hosts as $domain => $ip) {            $str .= $ip . "\t" . $domain . PHP_EOL;        }        file_put_contents($this->file, $str);        return $this;    }}

示例配置文件如下:

# 域名[domain]a.example.com=1 # 请无视这个 =1,因为使用了 parse_ini_file 这个函数来解析,如果后面不带值,就获取不到这条记录了b.example.com=1c.example.com=1# ip 记录[ip]local=127.0.0.1dev=192.168.1.100

使用方法:

php hosts.php local # 域名将指向本机 127.0.0.1php hosts.php dev # 域名将指向开发机 192.168.1.100php hosts.php # 删除域名的 hosts 配置

写完后,发现,这明明就是只需要一次查找替换就能完成的工作嘛。

相关推荐:

python切换hosts文件代码示例

以上就是PHP更改hosts文件的方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP更改hosts文件的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址