Heim > Artikel > Backend-Entwicklung > So ändern Sie Hosts in PHP
So ändern Sie Hosts in PHP: Löschen Sie zuerst die Hosts der Domäne in der Konfigurationsdatei und konfigurieren Sie die Domäne für die angegebene IP. Fügen Sie dann einen Host-Datensatz hinzu. Der Code lautet [public function write(); ].
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP Version 5.6, DELL G3-Computer.
So ändern Sie Hosts in PHP:
Es gibt eine solche Anforderung: Ich habe mehrere URLs, von denen ich hoffe, dass sie zu unterschiedlichen Zeiten verschiedenen IPs entsprechen. Wenn ich Hosts einzeln konfiguriere, erscheint mir diese Arbeit etwas umständlich. Ich habe das folgende Skript geschrieben, um Batch-Änderungen vorzunehmen.
<?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 记录数组 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(); } 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; } }
Die Beispielkonfigurationsdatei lautet wie folgt:
# 域名 [domain] a.example.com=1 # 请无视这个 =1,因为使用了 parse_ini_file 这个函数来解析,如果后面不带值,就获取不到这条记录了 b.example.com=1 c.example.com=1 # ip 记录 [ip] local=127.0.0.1 dev=192.168.1.100
Verwendung:
php hosts.php local # 域名将指向本机 127.0.0.1 php hosts.php dev # 域名将指向开发机 192.168.1.100 php hosts.php # 删除域名的 hosts 配置
Verwandte Videoempfehlungen: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo ändern Sie Hosts in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!