Configuring XAMPP as a WordPress development server

XAMPP logoFinally!  I’ve managed to get a satisfying development environment for WordPress on my local machine! I’ve had a semi-operational setup for a few years, but have just managed to meet all my needs!

I’m using XAMPP on Mac OSX to design my WordPress themes, and now my setup features:

  • a sensible, unique hostname for my local site (eg. memelab.dev)
  • prettylinks using url rewrite
  • functioning WordPress and plugin updates
  • a wp-config.php edit which eliminates the need to edit the database when uploading the site to the production server

Installation

Install XAMPP and WordPress.

This is pretty straight forward, but for the sake of completeness, I’ll mention this comprehensive guide from Six Revisions (which I haven’t examined too closely, but looks solid).

Configure prettylinks

I found that my prettylinks failed when I initially installed… I think this is fixed in later versions of XAMPP.  I’m running XAMPP 1.7.3, and I don’t recall needing to do anything on since upgrading, but if you’re having trouble, you may need to edit some config files.  You can open them in TextEdit.app if you don’t have a favourite editor (I love TextMate) by adapting the following:

sudo open -e “/Applications/XAMPP/etc/httpd.conf”

You may need to:

Enable URL rewrite) by opening xampp/xamppfiles/etc/httpd.conf and deleting the hash/pound sign at the front of the line to uncomment:
LoadModule rewrite_module modules/mod_rewrite.so
Fixing Permalink problems

When I intially had trouble (several years ago I think) the post which helped me out was:

“…Clean URLs do not work out of the box on XAMPP 1.5.x with PHP4 due to a problem in Apache’s module load order…
Clean URL support in XAMPP

Bottom line – its working a charm now!

Configure local servers

To access your local site at an address like http://memelab.com.au/wp/, you’ll need to configure XAMPP.  XAMPP stores its virtual hosts configuration in a separate file called httpd-vhosts.conf, which is not actually used by default, so:

  1. In /xampp/xamppfiles/etc/httpd.conf uncomment the line: Include /Applications/XAMPP/etc/extra/httpd-vhosts.conf
  2. You can now make entries into httpd-vhosts.conf.  There is an example in there – adapt it to your needs!
  3. Enter your hostname into /etc/hosts like so:
    127.0.0.1 yoursite.dev
    (Your hosts file is not visible in finder, and needs to be edited with admin privileges, so open the terminal and paste:
    sudo Open /Applications/TextEdit.app /etc/hosts
  4. Reload apache, and you’re done! (XAMPP control > Modules > Restart Apache).

I adapted my solution from a post in the WordPress Codex.

Enable WordPress updates whilst using XAMPP

This is the breakthrough which has prompted this post, thanks to Ian at messaliberty.com.  If you’ve come this far, you’ll have no trouble returning to /xampp/xamppfiles/etc/httpd.conf and replacing

User nobody
Group admin

with:

User yourusername
Group staff

You can find more detailed instructions at the source:

edit the XAMPP apache config file to run it as your local user.
How to fix WordPress automatic upgrades and plugin installs on XAMPP

(And make sure that LittleSnitch, if you use it, is allowing httpd to access wordpress.org)

Tweak wp-config.php

Ordinarily, migrating your database to your local installation, and vice-versa requires that you the WordPress database – in particular the WP_HOME and WP_SITEURL.  Ian at messaliberty.com again has a solution!  This is working well for me:

“set-up the wp-config.php to check to see if it is a local server, if it is then set the configuration one way, otherwise set it using the production values”
create a single wp-config file for local and remote WordPress development

A bonus tip on whilst we’re here – Joost has offered this addition:

“a quick hack I do in almost all WordPress installs I manage, that allows me to quickly switch on debug mode when needed”
Joost – Simple WordPress debuggin

Next recommendation from me: use some versioning software – I use Versions.app, which is a simple SVN client for the mac.

  • http://www.memelab.com.au tim

    I just noticed that due to changing the user that XAMPP runs as, phpMyadmin can no longer access its config file. I got the error:

    Existing configuration file (./config.inc.php) is not readable

    Simply change ownership on this file to yourself:
    – Locate the file in /Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php and Get Info.
    – Cruise down to Sharing and Permissions and add yourself by adding clicking the plus button, then selecting your name.

  • alfiesaden

    hello – is it just me !! can any one explain why when i type in the yahoo browser “memelab.com.au” i get a different site yet whe i type it in google its ok? could this be a bug in my system or is any one else having same probs ?
    alf saden

    • http://www.memelab.com.au tim

      I’ve approved this comment as a curiosity – it seems to be bot submitted. One of the more clever attention-grabbing phrases I’ve seen.

      I’m not sure what you’re trying to acheive Alfie Saden… a google search on this name shows a bunch of carbon copy comments on seemingly random blogs, yet no linking. Is this an attempt at Google Bombing?