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

PHP-以编程方式写入宿主文件,php,subdomain,host,saas,Php,Subdomain,Host,Saas,我正在localhost Xampp安装中执行我的项目 我的项目的一部分是 当用户在“我的网页”上注册时,系统将询问他所需的子域,从那时起,他的URL将为: chosensubdomain.mysite.com 除了子域之外,一切都很好,我必须在windows主机文件中手动添加条目,如下所示 127.0.0.1 chosensubdomain.mysite.com abc.mysite.com xyz.mysite.com 我想要的是当表单提交时,宿主文件应该添加一个条目 我

我正在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
。如果您在实时服务器上或在本地计算机上使用(以便于高级dns控制),则应该会对您有所帮助,否则您可以在主机文件中手动添加一个catch-all(*)子域

*.foo.com       IN  A       127.0.0.1
$sub_domain = "   foo.bar.com";
$append = file_put_contents('C:\Windows\System32\drivers\etc\hosts', $sub_domain.PHP_EOL , FILE_APPEND | LOCK_EX);
如果您仍然希望以ol'方式执行此操作,则必须使用PHP的I/O函数将文本动态附加到主机文件中

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

实际上,我认为回答您的问题会更好。

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

*.foo.com       IN  A       127.0.0.1
$sub_domain = "   foo.bar.com";
$append = file_put_contents('C:\Windows\System32\drivers\etc\hosts', $sub_domain.PHP_EOL , FILE_APPEND | LOCK_EX);
如果您仍然希望以ol'方式执行此操作,则必须使用PHP的I/O函数将文本动态附加到主机文件中

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

事实上,我认为这能更好地回答你的问题。

继续向主持人写新条目不是一个好办法

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

例如:设置

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

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


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

继续向主机写入新条目不是一个好方法

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

例如:设置

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

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


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

谢谢,我喜欢的ol方式和工作方式谢谢,我喜欢的ol方式和工作方式谢谢你的建议和解决方案。我会尽力的谢谢你的建议和解决方案。我试试看