【问题标题】:PHP - Writing to Host file programmaticallyPHP - 以编程方式写入主机文件
【发布时间】:2017-02-01 23:25:52
【问题描述】:

我正在localhost Xampp安装中进行我的项目实施

我的项目的一部分是,

当用户在我的页面上注册时,系统会要求他提供所需的子域,然后他的 URL 将是:

chosensubdomain.mysite.com

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

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

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

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

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

【问题讨论】:

    标签: php subdomain host saas


    【解决方案1】:

    虽然这很有可能,但更好、更省时的方法是使用您选择的编程语言在服务器上动态创建子文件夹,然后使用.htaccess 文件将http://foo.com/bar 重写为http://bar.foo.comThis 如果您在实时服务器上或在本地计算机上使用 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 更好地回答了你的问题。

    【讨论】:

    • 谢谢,我喜欢的老方法,而且有效的伙伴
    【解决方案2】:

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

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

    例如:设置Dnsmasq on OSX

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

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

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

    【讨论】:

    • 感谢您的建议和解决方案伙伴。我去试试
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2011-06-30
    • 2023-03-24
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多