Installing WHMCS on FreeBSD 9.0-RELEASE

Or, if you prefer: “WHMCS versus PHP.” Blogged for the next sysadmin searching Google.

$DAYJOB recently acquired WHMCS to help automate virtual server provisioning, billing, and so on. According to everything I’ve read, WHMCS runs just fine on FreeBSD, so I installed the prerequisites on a 9.0-i386 machine. As with any server for PHP-based Web sites, I verified that the server processed PHP with a simple phpinfo() page. I then grabbed the WHMCS tarball (no link, you must be a customer, sorry), extracted it into the directory, ran the setup program, fed in the database information and license key…

..and it wouldn’t run. Calling up the app resulted in a blank page. WHMCS provides troubleshooting instructions for this exact circumstance. I enabled the requested debugging, but couldn’t get WHMCS to produce an error. Adding a bogus argument to my phpinfo() test page made an error appear, so I was confident the failure to display an error message wasn’t a server configuration problem.

This comes down to FreeBSD’s PHP packaging.

When you install PHP on the popular varieties of Linux, you generally get a whole slew of PHP extensions with it. BSD-based systems only install exactly what you ask for: if you want PHP but don’t request any extensions, you won’t get any extensions.

I agree with this approach. Every piece of installed software needs patching and updating. Every piece of installed software is a potential attack vector. If I don’t need a piece of software, I don’t want it on my server.

WHMCS doesn’t list all of the required extensions. They assume you have a kitchen-sink PHP install. After some reading and research, I found that WHMCS runs fine with the following PHP modules and extensions installed. I’ve included the version numbers for reference, but you should be able to just pkg_add -r all of these by name.

php5-5.3.8
php5-bz2-5.3.8
php5-ctype-5.3.8
php5-curl-5.3.8
php5-dom-5.3.8
php5-extensions-1.6
php5-filter-5.3.8
php5-gd-5.3.8
php5-hash-5.3.8
php5-iconv-5.3.8
php5-json-5.3.8
php5-ldap-5.3.8
php5-mysql-5.3.8
php5-openssl-5.3.8
php5-pdo-5.3.8
php5-pdo_sqlite-5.3.8
php5-phar-5.3.8
php5-posix-5.3.8
php5-session-5.3.8
php5-simplexml-5.3.8
php5-tokenizer-5.3.8
php5-xml-5.3.8
php5-xmlreader-5.3.8
php5-xmlwriter-5.3.8
php5-zip-5.3.8
php5-zlib-5.3.8

I’d really like to trim this down to only what is strictly necessary to run WHMCS, but that information doesn’t seem to be available. I could methodically remove and reinstall extensions to see when WHMCS breaks, but I have better things to do than debug missing docs for a commercial PHP app.

On the plus side: now that WHMCS is installed, it’s really slick. I’m looking forward to using it. Actually, I’m looking forward to having other people use it for me, so I can do more interesting things than provision servers, accounts, and billing.

2 comments to Installing WHMCS on FreeBSD 9.0-RELEASE