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 \apache\conf\extra\httpd-vhosts.conf add your custom directories like: (note port 81 from step 7)
<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>
- Update your hosts file (C:\Windows\System32\drivers\etc\hosts) accordingly: 127.0.0.1 ALIAS.localhost
(added bonus: wildcards in hosts file (untested)) - OR, instead of #3 and #4, configure subdirectory aliases in \xampp\apache\conf\extra\httpd-userdir.conf, which will let you access your local dev like `http://localhost/ALIAS/whatever.php`
<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>
- Allow “missing” extensions by uncommenting dll line in \xampp\php\php.ini
- If also have IIS (VisualStudio) on same computer, you’ll need to change the ports (you can use other numbers)
- in \xampp\apache\conf\httpd.conf – change `Listen *:80` to `Listen: *.81`, `ServerName localhost:80` to `ServerName localhost:81`
- in \xampp\apache\conf\extra\httpd-ssl.conf – change `Listen 443` to `Listen 442`
- ignore the message in xampp-control that says it started on port 80 (that’s hardcoded)
