一个更改 hosts 的 PHP 脚本

WBOY
Freigeben: 2016-07-25 08:43:28
Original
902 Leute haben es durchsucht
  1. define('HOST_FILE', 'C:\Windows\System32\drivers\etc\hosts');
  2. $hm = new HostManage(HOST_FILE);
  3. $env = $argv[1];
  4. if (empty($env)) {
  5. $hm->delAllGroup();
  6. } else {
  7. $hm->addGroup($env);
  8. }
  9. class HostManage {
  10. // hosts 文件路径
  11. protected $file;
  12. // hosts 记录数组
  13. protected $hosts = array();
  14. // 配置文件路径,默认为 __FILE__ . '.ini';
  15. protected $configFile;
  16. // 从 ini 配置文件读取出来的配置数组
  17. protected $config = array();
  18. // 配置文件里面需要配置的域名
  19. protected $domain = array();
  20. // 配置文件获取的 ip 数据
  21. protected $ip = array();
  22. public function __construct($file, $config_file = null) {
  23. $this->file = $file;
  24. if ($config_file) {
  25. $this->configFile = $config_file;
  26. } else {
  27. $this->configFile = __FILE__ . '.ini';
  28. }
  29. $this->initHosts()
  30. ->initCfg();
  31. }
  32. public function __destruct() {
  33. $this->write();
  34. }
  35. public function initHosts() {
  36. $lines = file($this->file);
  37. foreach ($lines as $line) {
  38. $line = trim($line);
  39. if (empty($line) || $line[0] == '#') {
  40. continue;
  41. }
  42. $item = preg_split('/\s+/', $line);
  43. $this->hosts[$item[1]] = $item[0];
  44. }
  45. return $this;
  46. }
  47. public function initCfg() {
  48. if (! file_exists($this->configFile)) {
  49. $this->config = array();
  50. } else {
  51. $this->config = (parse_ini_file($this->configFile, true));
  52. }
  53. $this->domain = array_keys($this->config['domain']);
  54. $this->ip = $this->config['ip'];
  55. return $this;
  56. }
  57. /**
  58. * 删除配置文件里域的 hosts
  59. */
  60. public function delAllGroup() {
  61. foreach ($this->domain as $domain) {
  62. $this->delRecord($domain);
  63. }
  64. }
  65. /**
  66. * 将域配置为指定 ip
  67. * @param type $env
  68. * @return \HostManage
  69. */
  70. public function addGroup($env) {
  71. if (! isset($this->ip[$env])) {
  72. return $this;
  73. }
  74. foreach ($this->domain as $domain) {
  75. $this->addRecord($domain, $this->ip[$env]);
  76. }
  77. return $this;
  78. }
  79. /**
  80. * 添加一条 host 记录
  81. * @param type $ip
  82. * @param type $domain
  83. */
  84. function addRecord($domain, $ip) {
  85. $this->hosts[$domain] = $ip;
  86. return $this;
  87. }
  88. /**
  89. * 删除一条 host 记录
  90. * @param type $domain
  91. */
  92. function delRecord($domain) {
  93. unset($this->hosts[$domain]);
  94. return $this;
  95. }
  96. /**
  97. * 写入 host 文件
  98. */
  99. public function write() {
  100. $str = '';
  101. foreach ($this->hosts as $domain => $ip) {
  102. $str .= $ip . "\t" . $domain . PHP_EOL;
  103. }
  104. file_put_contents($this->file, $str);
  105. return $this;
  106. }
  107. }
复制代码

使用方法:
  1. php hosts.php local # 域名将指向本机 127.0.0.1
  2. php hosts.php dev # 域名将指向开发机 192.168.1.100
  3. php hosts.php # 删除域名的 hosts 配置
复制代码

hosts, PHP


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!