Switching to WordPress

The site was switched to the amazing WordPress in hope to make the content management easier. This wasn’t particularly difficult, and the main issue I experienced was missing PHP modules. Personally I prefer to keep the installation at minimum and install only those modules which are absolutely necessary. Unfortunately there is no summary about which PHP modules WordPress is using and which functionality you would miss if you do not have them. So after digging through the WordPress source code the following list was created, and I’d like to share it.

The following PHP modules are silently used by WordPress. Which means if the module is not available, there will be no warning, or error, just some functionality will not be available.

  1. php5-zlib – provides support for deflated/gzipped decoding for HTTP transactions if CURL is not used.
  2. php5-iconv – if present, is used to strips bad chars from the UTF8 input when a new post is created. Also if you use the Post via E-mail functionality, this module is used to convert the character encoding of your emails to UTF8. Which makes it mandatory for those of us who blog in languages other than English which use more than Latin1 character subset. If your posts via email is shown using the wrong encoding, install this module.
  3. php5-gd – if present, is used to create the image thumbnails. Without this module only the “Full Size” will be available for the images in your Media Library. Note that the thumbnail may be created at the time when the image is uploaded, so just installing this module won’t make the thumbnails automatically appear for the images which are already present in your library. You may need to reupload those.
  4. php5-mbstring – is essential for a proper handling of multibyte chracter encodings (i.e. non-English). You must have it installed if you do not use UTF8 (but why?)
  5. php5-fileinfo – if installed, is used for proper MIME type detection for multisite upload handler.
  6. php-5-curl – extensively used for various HTTP downloading/browsing (plugin installation and so on), for providing RSS feed and for Google spellcheck with the TinyMCE editor. However every case this module is used hasĀ  the fallback to regular socket ops if not working, so this module is not essential.
  7. php5-xmlreader and php-xmlwriter – used for RSS generation, OEMBED and SimplePie support. Those likely will not work without those modules installed.
  8. php5-spl – used for generating unique IDs for plugin objects. Fallbacks to built-in algorithm when this module is missing. Not sure if having it provides any visible benefits.
  9. php5-openssl – used for HTTP support. Without it requesting from, and posting to HTTPS web sites may not be possible.
  10. php5-ftp – required for FTPS upload support. If this module is missing, you will not see FTPS in the Connection options. Note that this module is NOT required for plain FTP upload, which is supported via built-in routines.
  11. php5-ssh2 – required for SFTP support. If this module is missing, you will not see SFTP in the Connection options. Unfortunately it seems like very few PHP installations provide this module.
  12. php5-pspell – if installed, is used by the TinyMCE spellchecker. If you install it, make sure you install the dictionaries as well.

In my case FTPS upload was disabled and the image thumbnails were not generated because of missed modules.

This list only applies to version 3.3, although I do not expect the module usage to change significantly within versions.

This entry was posted in Wordpress.

One Response to Switching to WordPress

  1. Gwyneth Llewelyn says:

    Thanks for posting your list! It’s amazing how difficult this is to find; I’m running a server with very little available memory, and need to cut down as many modules as possible, so this list of yours is great :)

    Of course, you left out the obvious php5-mysql :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>