0

I am doing my project implementation in localhost Xampp installation

Part of my project is ,

When the user sign up on my page he will be asked for his desired sub domain and from then on his URL will be :

chosensubdomain.mysite.com

Everything works perfectly , except for sub domain i have to manually add the entries in windows host file as follows

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

What i want was when the form submits the host file should be added up with a entry

I am not sure that whether it is possible to make entry in Windows Host file programmatically using PHP .

Kindly help me out with this mates ...

Raja Gopal
  • 1,845
  • 1
  • 17
  • 34

2 Answers2

2

While this is very possible, a better, time saving approach will be to use your programming language of choice to dynamically create sub-folders on the server then use a .htaccess file to rewrite http://foo.com/bar to http://bar.foo.com. This should help you if you're on a live server or you use Zpanel on a local machine (For ease of advanced dns control) else you can manually add a catch-all (*) sub-domain in your host file.

*.foo.com       IN  A       127.0.0.1

If you still want to do it the ol' way, you have to use PHP's I/O functions to append text dynamically to your host file.

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

I actually think this answers your question better.

Community
  • 1
  • 1
DanielTheGeek
  • 183
  • 1
  • 16
1

Keeping writing new entries to hosts is not a good way.

Here is my idea: Use Dnsmasq on your local environment.

For Example: Setup Dnsmasq on OSX

The rule for dnsmasq should be set to resolve any domain ending with mysite.com to 127.0.0.1

In such way, all your subdomain matched on your local environment will point to localhost, which get your problem solved.

In production environment, you may set a wildcard A or AAAA (maybe) record for your domain.

Shiji.J
  • 1,561
  • 2
  • 17
  • 31