XAMPP Apache won’t start on Windows 10 — a fix

At work yesterday I discovered that the localhost Apache web server on my PC wouldn’t start; it was running XAMPP.

Each time I tried to start Apache from the XAMPP control panel I got these error messages in the console:

08:59:34 [Apache] Attempting to start Apache app…
08:59:35 [Apache] Status change detected: running
08:59:35 [Apache] Status change detected: stopped
08:59:35 [Apache] Error: Apache shutdown unexpectedly.
08:59:35 [Apache] This may be due to a blocked port, missing dependencies,
08:59:35 [Apache] improper privileges, a crash, or a shutdown by another method.
08:59:35 [Apache] Press the Logs button to view error logs and check
08:59:35 [Apache] the Windows Event Viewer for more clues
08:59:35 [Apache] If you need more help, copy and post this
08:59:35 [Apache] entire log window on the forums

Fix

Reinstalling XAMPP didn’t fix the issue. But this did, spotted on the ever-wonderful Stackoverflow:

  1. Press Windows + R to bring up the Windows Run… dialog.
  2. Type services.msc and click OK.
  3. Scroll down the list of services to find World Wide Web Publishing Service.
  4. Right-click it and select Properties.
  5. Change the Startup type to Manual.
  6. Click Stop and wait for the service to stop.
  7. Click OK.
World Wide Web Publishing Service properties dialog
This is the naughty culprit

That fixed it. Now Apache is running, as evidenced by the green light on the XAMPP control panel:

XAMPP Control Panel
Both Apache httpd and MySQL are running

WordPress upgrade: filling in the missing pieces

Missing piece

Well, where to start?

I’ve been meaning to blog about life for ages but since Reuben and Joshua were born in November 2008 other things took more of a priority.  Things like attending to twin boys, eating, getting enough sleep, and generally trying to muddle through the days.  I’ll likely write more about that in the future.

Simplifying life

Over the last few months I’ve been working at simplifying life as much as possible, and being a good Getting Things Done / Take Back Your Life disciple and disengaging from projects and tasks that I knew I wouldn’t/couldn’t complete or which were no longer priorities.  It’s felt good.

That’s given me more of a focus on the things that I do want to do.  Sorting out my web server was one of those things.

Server upgrade

I suspect that I would have blogged more about it at the time (and I now wish that I had) but I made a promise to myself that I wouldn’t blog again until I’d upgraded my server.  Of course, that took a good few months longer than I had anticipated (doesn’t everything these days?).

In February I moved from Webfusion to Heart Internet, after an abortive attempt to simply upgrade to a better hosting package at Webfusion.  The killer feature that was missing from the Webfusion package was subdomains; I didn’t want to lose my www.garethjmsaunders.co.uk URL that I’d just had printed onto a custom-made laptop skin.

So far my experience of Heart Internet has been excellent.

Upgrade WordPress

The most pressing reason for moving to a better server was to enable me to upgrade WordPress, the software that manages my blog.  My old host had a bunch of really out-of-date features (MySQL 3.2 and PHP4) which just wasn’t enough to run the latest versions of WordPress.  What a relief to be able to upgrade from WordPress version 2.0.11 to the latest version 2.9.

And wow! there have been quite a few changes to WordPress in the interim: the addition of widgets and tags, as well as critical changes to the main API, a much nicer UI, etc.  So many changes in fact that my old theme broke.  So that had to be fixed.

The upgrade was pretty pain-free thanks to WordPress’s infamous 5-minute install and upgrade script.  (I tested it out first, of course, on my localhost machine using XAMPP.)  The only thing that I missed was matching the database character set encoding.  It was set to ISO-8859-1 (Latin-1) rather than UTF-8 (Unicode) so there are still a few odd character combinations on the blog that I need to track down.

Batch categories

WordPress now has tags.  Back it the day it only supported categories so I, like many other WordPress users, created tens of categories to organise what I was writing about.  I had 88 categories.

I found a tremendous plugin called Batch Categories which let me quickly (by which I mean over the course of two days, rather than weeks if I had to edit each post individually) move groups of posts from one category to another, and also add tags to groups of posts.

So I took the easy route of replacing most of the categories I had with tags and rationalising my categories down to nine:

  1. Books
  2. Computer
  3. Family
  4. General
  5. God Project
  6. Mah Jong
  7. Music
  8. Psion
  9. Web

Next …

I’m really keen to redesign my blog theme but I’m going to hang off on that for the time being.  I’ve got a couple of other things that I want to complete first.

CSS framework

The first thing is to complete work on what started as a plugin for the Blueprint CSS framework and which is now turning out to be a combination of different parts of my favourite CSS frameworks.

Website redesign

Once that’s done I’m going to work on a complete reworking of my main website www.garethjmsaunders.co.uk.  The last time I did any serious work on it was, I think, probably around 2003.  The code has a very serious dose of ‘classitis‘.

One of my biggest drivers is the number of emails and telephone calls that I still get for information about and software for the Psion range of PDAs.  I want to create some space for myself by putting a lot more of that information on my site, in a way that it can be found more easily.

Moving to a new server

I’m in the process of moving Web servers on my main website and blog: www.garethjmsaunders.co.uk, from a really old hosting account at Webfusion to a new shiny one with Heart Internet.

I’ll write more about why I’m moving at a later date, in the meantime simply know that there may be a little disruption to the website and blog (as well as to my email) over the next 24-48 hours while nameservers and DNS settings are updated.

I’ve been meaning to upgrade my hosting account for months, which is actually one of the reasons why I’ve not been blogging quite as much as I’d have liked. “I’ll write about that after I’ve moved servers,” I’ve thought and then postponed the move because something else got in the way. In the end, last week I decided to just do it!

I’ll see you on the other side.