PHP - 以编程方式写入主机文件

PHP - Writing to Host file programmatically

我正在 localhost Xampp 安装中执行我的项目

我的部分项目是,

当用户在我的页面上注册时,他将被要求提供他想要的子域,从那时起他的 URL 将是:

chosensubdomain.mysite.com

一切正常,除了子域,我必须手动添加 windows 主机文件中的条目,如下

127.0.0.1       chosensubdomain.mysite.com   abc.mysite.com  xyz.mysite.com

我想要的是当表单提交主机文件时应该添加一个条目

我不确定是否可以使用 PHP 以编程方式在 Windows 主机文件中输入。

请帮我解决这个问题...

虽然这是很有可能的,但更好、更省时的方法是使用您选择的编程语言在服务器上动态创建子文件夹,然后使用 .htaccess 文件重写 http://foo.com/barhttp://bar.foo.comThis should help you if you're on a live server or you use Zpanel 在本地计算机上(为了便于高级 dns 控制),否则您可以在主机文件中手动添加一个包罗万象的 (*) 子域。

*.foo.com       IN  A       127.0.0.1

如果您仍想以旧方式进行操作,则必须使用 PHP 的 I/O 函数将文本动态附加到您的主机文件。

$sub_domain = "   foo.bar.com";
$append = file_put_contents('C:\Windows\System32\drivers\etc\hosts', $sub_domain.PHP_EOL , FILE_APPEND | LOCK_EX);

我实际上认为 this 更好地回答了您的问题。

不断向主机写入新条目不是一个好方法。

这是我的想法:在您的本地环境中使用 Dnsmasq

例如:设置 Dnsmasq on OSX

dnsmasq 的规则应设置为将任何以 mysite.com 结尾的域解析为 127.0.0.1

这样,您在本地环境中匹配的所有子域都将指向本地主机,从而解决您的问题。

在生产环境中,您可以为您的域设置通配符 A 或 AAAA(可能)记录。