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

时间:2016-09-24 02:48:36

标签: php subdomain host saas

我正在 localhost Xampp 安装

中进行项目实施

我的项目的一部分是,

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

  

chosensubdomain.mysite.com

一切都很完美,除了子域我必须手动添加windows主机文件中的条目,如下所示

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

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

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

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

2 个答案:

答案 0 :(得分:1)

虽然这很有可能,但更好的,省时的方法是使用您选择的编程语言在服务器上动态创建子文件夹,然后使用.htaccess文件将http://foo.com/bar重写为http://bar.foo.com。如果您在实时服务器上或在本地计算机上使用This({为了便于高级DNS控制),Zpanel应该可以帮助您,否则您可以手动添加一个全能(*)子您的主机文件中的域。

*.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可以更好地回答您的问题。

答案 1 :(得分:1)

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

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

例如:设置Dnsmasq on OSX

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

的域名

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

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