PHP configuration/ja

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.

MediaWikiとの互換性
どのバージョンのPHPでどのバージョンのMediaWikiが動くかの対応については、対応表をご覧ください.

インストール
http://php.net/install を参照してください.

必須
MediaWikiを動作させるには、以下のPHPエクステンションが必要です.
 * Perl互換正規表現 (PCRE)
 * セッション
 * 標準PHPライブラリ（SPL）
 * Document Object Model（DOM）
 * iconv（文字コード変換ライブラリ）
 * JSON（もしくは、フォークしたpecl-json-c）
 * 少なくとも以下のうちどれか1つのデータベースドライバ:
 * MySQL
 * PostgreSQL
 * SQLite（PDO経由）
 * MySQLやPostgreSQLのPDO経由でのアクセスや、MySQLiについては未対応です.

PCRE、セッション、SPL、JSONについてはデフォルトで有効であり、特にPHP 5.3以降ではPCREとSPLが必ず有効になっています.

省略可能
MediaWikiでは、PHPへコンパイル時に組み込むオプションについてもいくつか使おうとしますが、なくても動作は可能です.
 * mbstring：マルチバイト文字列の処理（なければ自前処理となり、遅いながらも動作はします）
 * zlib：圧縮ライブラリ、ファイルキャッシュを圧縮する場合には必要になります
 * ソケット （memcachedを使う場合に必要）
 * dba DBM-style database abstraction layer, for caching, with the following handlers:
 * CDB for interwiki cache (and maybe some other things)
 * Berkely DB3 if you want to use CACHE_DBA in either,  or
 * FastStringSearch

例
We are successfully working with these compiler options:

 './configure' \ '--with-mysql' \ '--with-apxs2=/usr/sbin/apxs2' \ '--with-zlib' \ '--with-ldap' \ '--with-gd' \ '--with-jpeg-dir' \ '--with-iconv-dir' \ '--enable-mbstring' In detail, these configure options do the following:


 * --with-mysql : Allows PHP to query MySQL. This is an essential feature (I think). You will need to have MySQL installed to enable this option.
 * --with-apxs2=/usr/sbin/apxs2 : this is required if you want to build mod_php. APXS is for configuring compilation of an Apache module. You will need to change (or omit the path) for your specific system.
 * --with-zlib : Allows PHP to read / write zipped files and send compressed data to Apache ... or something like that
 * --with-ldap : Important if you want your wiki users to be verified by LDAP
 * --with-gd : Use this if you want image processing 'within' PHP, else you can use ImageMagick. Because this option requires that you have various libraries installed... but presumably IM has the same deps... oh well...
 * --with-jpeg-dir : Seems nonsensical
 * --with-iconv-dir : Seems nonsensical
 * --enable-mbstring : Allows multibyte character string support. This is optional, as slower custom code will be used if not available.

Opcode caching

 * Manual:Cache を参照してください

MediaWikiのコードベースは大きいので、コンパイル後のスクリプトを何かしらの形でキャッシュすることを強く推奨します. PHPにはその種のキャッシュ用のプラグインが、フリーなもの、商用のものを含めいくつか存在しています. 以下に多少を例示します：
 * Alternative PHP Cache - Wikimediaで使用中
 * Windows Cache Extension for PHP - IISの利用者にはこちらを推奨

幸い、これらはZendプラグインとなっていて、ライブラリを入れてphp.iniを設定するだけで簡単にインストールできます. PHP全体を再コンパイルするような手間はかかりません.

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

MediaWiki can also interact with that caches and use them for object caching, see.

実行時設定 (php.ini)
php.iniの設定によってはMediaWikiの動作が変化したり、あるいはまったく動かなくなってしまうようなことがあります.


 * register_globals
 * これを有効にしていると大きなセキュリティリスクを生み、XSS攻撃に使うこともできます. MediaWikiではonにする必要はありませんので、特段の事情がない限りoffとしてください.


 * safe_mode
 * セーフモードは発想も設計もよくない設定です. 有効にしていてもMediaWikiは動かなくはないですが、一部に動かない機能が発生します.


 * magic_quotes_gpc
 * このオプションは、 、 、 に引用符を加えるというものです. 有効でもMediaWikiは動作しますが、不要な引用符を削除しながらの動作となるので、その分遅くなります.


 * magic_quotes_runtime
 * このオプションを有効にしてしまうと、ファイルやデータベースから取得したデータなど、予期しないところに引用符を入れてデータを破壊してしまいます. 有効にした状態では、MediaWikiのインストール自体も拒否されます.


 * magic_quotes_sybase
 * magic_quotes_runtime と同じです


 * mbstring.func_overload
 * このオプションはエラーの原因となり、またデータを破壊してしまう危険もあります. 有効にした状態では、MediaWikiのインストール自体も拒否されます.


 * zend.ze1_compatibility_mode
 * このオプションが有効だと深刻なバグを引き起こします. 有効にした状態では、MediaWikiのインストール自体も拒否されます.


 * memory_limit
 * MediaWikiの動作には、充分なメモリが必要です. 最低限20MB程度あれば動作するかもしれませんが、きちんと動作させたいなら最低でも50MBのメモリを用意することが必要でしょう.


 * disable_functions
 * インストール中にGNU diff3やgitを検出するためには、passthruを指定してはいけません.

画像のサイズ変更
画像のリサイズにImageMagickを使うこともできます. ImageMagickがない場合には、（あれば）PHPのGDを使います.

関連項目

 * PHP 知識ベース
 * PHP のチュートリアル
 * Suhosin (Hardened-PHP Project patch and extension)
 * Simple PHP Tutorials