Skip to content
Article

The “Complete” How-to Set Up XAMPP on Windows

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.

  1. Download zip version
  2. run setup_xampp.bat to fix directories
  3. 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]

     

  4. Update your hosts file (C:WindowsSystem32driversetchosts) accordingly: 127.0.0.1 ALIAS.localhost
    (added bonus: wildcards in hosts file (untested))
  5. 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]
  6. Allow “missing” extensions by uncommenting dll line in xamppphpphp.ini
  7. If also have IIS (VisualStudio) on same computer, you’ll need to change the ports (you can use other numbers)
    1. in xamppapacheconfhttpd.conf — change `Listen *:80` to `Listen: *.81`, `ServerName localhost:80` to `ServerName localhost:81`
    2. in xamppapacheconfextrahttpd-ssl.conf — change `Listen 443` to `Listen 442`
    3. ignore the message in xampp-control that says it started on port 80 (that’s hardcoded)

The Atlantic BT Manifesto

The Ultimate Guide To Planning A Complex Web Project