PHP configuration/ja

PHP とはウェブテンプレートのシステムで、いつのまにか一般的な使い方がされるようになったものです. PHP の構文、能力、実行モデルはPerlとあまりにも似ており、「インタプリター」を使って読み込んだスクリプトをバイトコードにコンパイルして実行します. 一般的にPHPインタープリターは、コマンドライン、CGIスタイルで実行でき、より一般的なインプロセスのApache モジュールとしても実行できます.

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

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

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

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

省略可能
MediaWikiでは、PHPへコンパイル時に組み込むオプションについてもいくつか使おうとしますが、なくても動作は可能です.


 * zlib：圧縮ライブラリ、ファイルキャッシュを圧縮する場合には必要になります
 * ソケット （memcachedを使う場合に必要）

例
これらのコンパイラオプションを使用して正常に作業しています:

 './configure' \ '--with-mysql' \ '--with-apxs2=/usr/sbin/apxs2' \ '--with-zlib' \ '--with-ldap' \ '--with-gd' \ '--with-jpeg-dir' \ '--with-iconv-dir' \ '--enable-mbstring' 詳細には、これらの設定オプションは次のとおりです.


 * --with-mysql : PHPに MySQL のクエリを許可. （私の意見としては）これは重要な機能です. MySQL をインストールしてこのオプションをご利用ください.
 * --with-apxs2=/usr/sbin/apxs2 : mod_php の構築に必要です. Apache モジュールの解析に APXS を使い、特定のシステムではパスの変更（除外）をします.
 * --with-zlib : 圧縮ファイルの読み書きを PHP に認め、圧縮ファイルを Apache ... やその他に送信させます
 * --with-ldap : LDAP を使用してご利用のウィキのユーザー承認をする場合に重要です
 * --with-gd : PHP '内で'画像処理をする場合に使い、それ以外であれば ImageMagick を採用します. このオプションには、さまざまなライブラリのインストールが前提であり... おそらくは ImageMagick も同様の深さがあるわけで... （訳注: 違いは不明瞭）...
 * --with-jpeg-dir : 無意味と判断
 * --with-iconv-dir : 無意味と判断
 * --enable-mbstring : マルチバイトの文字列サポートを許可. これはオプションであり、もしサポートがない場合には処理の遅い特性のコードを使用します.

命令コードのキャッシュ

 * を参照してください

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

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

使用するキャッシュとオプションによっては、スクリプトファイルを更新するたびに特別な操作を実行する必要があります.

MediaWikiは、そのキャッシュとやりとりしてオブジェクトキャッシュに使用することもできます（ を参照）.

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


 * register_globals


 * 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を指定してはいけません.


 * post_max_size
 * エラー「 」が表示されている場合は、「M」の代わりに「MB」という接頭辞が設定されている可能性があります（後者はメガバイトではなくバイトで解釈される）.

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

関連項目

 * [$knowledge PHP 知識ベース]
 * [$phptutorial PHP のチュートリアル]
 * Suhosin（強化されたPHPプロジェクトのパッチと拡張機能）