PHPの設定
PHP とはウェブテンプレートのシステムで、いつのまにか一般的な使い方がされるようになったものです。PHP の構文、能力、実行モデルは Perl とあまりにも似ており、「インタプリター」を使って読み込んだスクリプトをバイトコードにコンパイルして実行します。一般的に PHP インタープリターは、コマンドライン、CGI スタイルで実行でき、より一般的なインプロセスの Apache モジュールとしても実行できます。
MediaWikiとの互換性
どのバージョンの PHP でどのバージョンの MediaWiki を使用できるかの対応は、互換性#PHP を参照してください。
インストール
https://php.net/install を参照してください。
コンパイル時のオプション
必須
MediaWikiを動作させるには、以下のPHP拡張が必要です。
- Perl互換正規表現 (PCRE)
- セッション
- 標準PHPライブラリ(SPL)
- Document Object Model(DOM)
- iconv(文字コード変換ライブラリ)
- JSON(もしくは、フォークしたpecl-json-c)
- mbstring マルチバイト文字列の処理
- fileinfo MIMEタイプの検出
- intl Unicode normalization
- calendar Support for conversion between different calendars
- 少なくとも以下のうちどれか1つのデータベースドライバ:
- MySQL
- PostgreSQL
- SQLite(PDO経由)
MySQLやPostgreSQLのPDO経由でのアクセスについては未対応です
PCRE、セッション、SPL、JSONについてはデフォルトで有効であり、特にPHP 5.3以降ではPCREとSPLが必ず有効になっています。
省略可能
MediaWikiでは、PHPへコンパイル時に組み込むオプションについてもいくつか使おうとしますが、なくても動作は可能です。
例
これらのコンパイラオプションを使用して正常に作業しています:
'./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
- マルチバイトの文字列サポートを許可。これはオプションであり、もしサポートがない場合には処理の遅い特性のコードを使用します。
命令コードのキャッシュ
- Manual:パフォーマンス チューニング を参照してください
MediaWikiのコードベースは大きいので、コンパイル後のスクリプトを何かしらの形でキャッシュすることを強く推奨します。PHPには無料から商用向けを含め、その種のキャッシュ用のプラグインがいくつかあります。以下に少し例示します:
- Alternative PHP Cache - Wikimediaで使用中
- Windows Cache Extension for PHP - IISの利用者にはこちらを推奨
幸い、これらはZendプラグインとなっていて、ライブラリを入れてphp.iniを設定するだけで簡単にインストールできます。PHP全体を再コンパイルするような手間はかかりません。
使用するキャッシュとオプションによっては、スクリプトファイルを更新するたびに特別な操作を実行する必要があります。
MediaWikiは、そのキャッシュとやりとりしてオブジェクトキャッシュに使用することもできます($wgMainCacheType
を参照)。
実行時設定 (php.ini)
php.iniの設定によってはMediaWikiの動作が変化したり、あるいはまったく動かなくなってしまうようなことがあります。
- magic_quotes_gpc
- このオプションは、
$_GET
、$_POST
、$_COOKIES
に引用符を加えるというものです。有効でも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 モジュールを使用します。
関連項目
- PHP 知識ベース
- PHP のチュートリアル (Archived 2010-05-11 at the Wayback Machine)
- Suhosin (強化されたPHPプロジェクトのパッチと拡張機能)