久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP實(shí)現(xiàn)更改hosts文件的方法示例

這篇文章主要介紹了PHP實(shí)現(xiàn)更改hosts文件的方法,結(jié)合具體實(shí)例形式分析了php操作hosts文件的相關(guān)讀取、設(shè)置、刪除等實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)更改hosts文件的方法。分享給大家供大家參考,具體如下:

有這樣一個(gè)需求,我有多個(gè)網(wǎng)址希望在不同的時(shí)候?qū)?yīng)不同的 ip,如果一個(gè)個(gè)配 hosts,這工作顯得有些繁瑣。寫了如下腳本來批量更改。

<?php
define('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 記錄數(shù)組
    protected $hosts = array();
    // 配置文件路徑,默認(rèn)為 __FILE__ . '.ini';
    protected $configFile;
    // 從 ini 配置文件讀取出來的配置數(shù)組
    protected $config = array();
    // 配置文件里面需要配置的域名
    protected $domain = array();
    // 配置文件獲取的 ip 數(shù)據(jù)
    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();
    }
    public 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 # 請無視這個(gè) =1,因?yàn)槭褂昧?parse_ini_file 這個(gè)函數(shù)來解析,如果后面不帶值,就獲取不到這條記錄了
b.example.com=1
c.example.com=1
# ip 記錄
[ip]
local=127.0.0.1
dev=192.168.1.100

使用方法:

php hosts.php local # 域名將指向本機(jī) 127.0.0.1
php hosts.php dev # 域名將指向開發(fā)機(jī) 192.168.1.100
php hosts.php # 刪除域名的 hosts 配置

寫完后,發(fā)現(xiàn),這明明就是只需要一次查找替換就能完成的工作嘛

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php文件操作總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實(shí)例形式分析了php實(shí)現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實(shí)現(xiàn)服務(wù)端分頁的示例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實(shí)現(xiàn)APP微信支付的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實(shí)現(xiàn)的多維數(shù)組排序算法,結(jié)合實(shí)例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進(jìn)行排序相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
這篇文章主要為大家詳細(xì)介紹了php結(jié)合ajaxuploadfile實(shí)現(xiàn)無刷新文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細(xì)介紹了PHP開發(fā)接口使用RSA進(jìn)行加密解密方法,對此有興趣的朋友可以學(xué)習(xí)下。
主站蜘蛛池模板: 亚洲一区二区不卡在线观看 | 久久最新精品视频 | 国产精品久久久久久久久久东京 | 精品福利在线 | 亚洲日韩中文字幕一区 | 成人区一区二区三区 | 91久久精品一区二区三区 | 国产精品日韩一区 | 中文视频在线 | 在线看成人av | 免费av手机在线观看 | 久久国产综合 | 一级黄色影片在线观看 | 91pao对白在线播放 | 欧美精品一区二区三区在线 | 久久久久中文字幕 | 奇米久久 | 国产精品小视频在线观看 | 日韩在线一区二区 | 成人依人| 免费在线观看av网址 | 欧美jizzhd精品欧美巨大免费 | 欧美日韩国产在线观看 | 99精品国产一区二区青青牛奶 | 国产精品一区二区三区四区五区 | 国产亚洲一区精品 | 黄色免费在线观看网址 | 欧美日韩理论 | 狠狠爱网址 | 五月精品视频 | 久草视频网站 | 国产h视频 | 欧美一区二区三区在线 | 手机看片1| 中文字幕在线一区二区三区 | 日韩在线一区二区三区 | 国产成人精品久久二区二区 | 丝袜美腿一区二区三区动态图 | 成人一区二区视频 | 99热这里都是精品 | 91在线一区二区三区 |