Rumah > pembangunan bahagian belakang > tutorial php > 一个更改 hosts 的 PHP 脚本

一个更改 hosts 的 PHP 脚本

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-07-25 08:43:28
asal
991 orang telah melayarinya
  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


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan