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/bar重写为http://bar.foo.com。如果你在一个实时服务器上,或者你在本地机器上使用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);

我认为这更能回答你的问题。

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

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

示例:Setup Dnsmasq on OSX

dnsmasq的规则应该设置为解析任何以mysite.com127.0.0.1结尾的域

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

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