PHP configuration

PHP is a web template system that accidentally grew up into a fairly general language. PHP's syntax, capabilities, and execution model bear vague similarities to Perl; scripts are loaded by an "interpreter", compiled to bytecode, and then executed. The PHP interpreter can be run from the command line, CGI-style, or more commonly as an in-process Apache module.

Installation
http://www.php.net/manual/en/installation.php

Compile-time options
MediaWiki either needs or wants a number of optional features of PHP that need to be enabled at compile time:
 * mbstring multibyte character string support (optional; slower custom code will be used if not available)
 * iconv character set conversion library (optional; other conversion functions will be used if not available)
 * zlib compression library, optionally to compress the file cache
 * sockets support for network communication, if using memcached

Example
We are successfully working with these compiler options:

'./configure' '--with-mysql' '--without-sqlite' '--with-apxs2=/usr/sbin/apxs2' '--with-zlib' '--with-ldap' '--with-gd' '--with-jpeg-dir' '--with-iconv-dir' '--enable-mbstring'

Opcode caching

 * Which PHP cache is used? APC or Turck MMcache?

If running a high-traffic site, it is highly recommended that a system be used to cache the compiled scripts; there are a number of such plugins for PHP, some free, some proprietary. Wikimedia currently uses Turck MMcache and used to use the ionCube PHP Accelerator. There is Alternative PHP Cache, however we had more problems with it than ionCube.

Fortunately, these all seem to be easy to install as Zend plugins, you just drop in a library and change your php.ini. No fussy recompiling of the entire PHP!

Depending on the cache and options used, you may have to perform a special operation whenever updating script files.

Image Resizing
ImageMagick can be used for image resizing (see Manual:Configuration settings). When it is not available the GD PHP module is used instead where found.