If you run PHP locally on a Windows machine, you’re probably using XAMPP. By default, you put all your files in the xampp directory (htdocs) to make things work. However, if want a different directory structure (i.e. under “My Documents”) you can set up domain or subdirectory aliases.
The following steps are the mostly-complete guide to setting up XAMPP: set alternate folders/domains/subdirectories, enable “missing” extensions, and let it play nicely with VisualStudio’s local IIS.
- Download zip version
- run setup_xampp.bat to fix directories
- to access your local dev like `http://ALIAS.localhost:81/whatever.php`, in apacheconfextrahttpd-vhosts.conf add your custom directories like: (note port 81 from step 7)
[php htmlscript=”true”]<VirtualHost *:81>
ServerAdmin YOUR@EMAIL.COM
DocumentRoot "/Relative/Path/To/LocalFiles"
ServerName ALIAS.localhost
ServerAlias www.ALIAS.localhost
ErrorLog "logs/ALIAS.localhost-error.log"
CustomLog "logs/ALIAS.localhost-access.log" combined<Directory "/Relative/Path/To/LocalFiles">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
[/php] - Update your hosts file (C:WindowsSystem32driversetchosts) accordingly: 127.0.0.1 ALIAS.localhost
(added bonus: wildcards in hosts file (untested)) - OR, instead of #3 and #4, configure subdirectory aliases in xamppapacheconfextrahttpd-userdir.conf, which will let you access your local dev like `http://localhost/ALIAS/whatever.php`
[php htmlscript=”true”]
<IfModule alias_module>
# ===== Description of the following
Alias /ALIAS "/Relative/Path/To/LocalFiles"
# Access control, etc
<Directory "/Relative/Path/To/LocalFiles">
AllowOverride All
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</IfModule>
[/php] - Allow “missing” extensions by uncommenting dll line in xamppphpphp.ini
- If also have IIS (VisualStudio) on same computer, you’ll need to change the ports (you can use other numbers)
- in xamppapacheconfhttpd.conf — change `Listen *:80` to `Listen: *.81`, `ServerName localhost:80` to `ServerName localhost:81`
- in xamppapacheconfextrahttpd-ssl.conf — change `Listen 443` to `Listen 442`
- ignore the message in xampp-control that says it started on port 80 (that’s hardcoded)