由于我一直在创建小型测试和开发网站,因此我正在用 php 5.3 编写一个基于 Web 的小型脚本,以简化在运行 wamp 堆栈的 Windows 上创建本地开发网站的过程,该脚本旨在创建一个 vhost 条目以及 Windows 主机文件中网站的条目,我认为我最好尽可能使其不特定于 Windows 版本。我突然想到:-
a) 我甚至不记得我的 hosts 文件中什么时候只有一个 127.0.0.1 localhost 条目,即使它在“开箱即用”时有这个条目
b) Windows 3.1 之后的所有版本是否都始终使用主机文件进行本地 DNS 查询,并且它是否始终位于 :\WINDOWS\system32\drivers\etc\hosts 中?
我知道手动在 apache conf 和主机文件中进行一些简单的编辑听起来有点懒惰,但我计划在其中添加一些额外的内容(创建 mysql/sqllite/mssql/postgre 模板数据库,能够构建 zend 框架模板等,所以它不仅仅是 vhost 和主机文件条目!我还将创建一个并行设置脚本,希望也能简化在我的 Unix vps 上的部署,但这应该更容易一些)
答案1
所有版本的 Windows 是否都附带主机文件,并且它们都具有 localhost 条目
否。从 Windows 7 开始,localhost 条目已被删除。localhost 现在在 DNS 解析器本身中解析。文件本身在那里,但开箱即用,它只是一堆注释。
也就是说,Windows 7行为就像 HOSTS 文件中有一个 localhost 条目。localhost 确实指向 127.0.0.1 和 ::1,只是方式不同。
Windows 3.1 之后的所有版本是否都始终使用主机文件进行本地 DNS 查询,并且它始终位于 :\WINDOWS\system32\drivers\etc\hosts
它一直%WINDIR%\system32\drivers\etc\hosts
适用于基于 NT 的 Windows。某些版本的 Windows(如 2000)使用 \WINNT 而不是 \Windows。正如我上面所述,Windows 7 根本不使用 HOSTS 文件来解析本地主机。
对于非 NT Windows(例如 95/98/ME),它已经是%Windir%\HOSTS
。