図1●PHP開発ロードマップ(2006年5月版)
図1●PHP開発ロードマップ(2006年5月版)
[画像のクリックで拡大表示]

 今月は,PHP 5系の最新版にあたるPHP 5.1.3と,そのリリース直後にみつかった重大な不具合を修正したPHP 5.1.4が相次いでリリースされた。今回は,これらのPHPリリース関連の情報と,前回紹介したZend Frameworkの開発状況を中心にお伝えする。

PHPリリース関連情報

 前回のPHPウォッチ掲載以降の約1カ月間に行われたPHPのリリース関連情報について紹介する。

PHP5.2の開発がスタート

 PHP 5系の次期リリースとしてPHP 5.2系のリリースが発表された。PHPにおいては,開発版に新たな機能が取り込まれ,リリース用のブランチでは主にバグ修正が行われている。

 PHP 5の現在の最新版は,PHP 5.0系にスクリプトエンジンレベルの性能改善とPDOの追加を行ったPHP 5.1系である。現在,新しい機能は開発版(PHP 6)に取り込まれ,PHP 5.1系では主にバグ修正のみが行われている。Unicode対応が行われるPHP 6のリリースは当分先となることから,PHP 5系に新機能を追加するためにPHP 5.2のリリースが計画された。

 既に本連載において数回紹介しているPHPの開発ロードマップの最新版を図1に示す。現時点では,最新の開発版としてPHP 6に向けた開発が行われており,PHP 4ではPHP 4.4系,PHP 5ではPHP 5.1系において主にバグ修正が行われている。

 PHP 5.2においては,既にPHP 6用開発コード(CVSのHEADブランチ)に実装されているいくつかの新機能が移植される予定となっている。現時点でPHP 5.2において予定される主な変更点を以下に示す。

1.ファイル関連の関数(is_file(),is_dir(),filesize())における2Gバイトを超えるファイルのサポート
2.入力フィルタ用エクステンションfilterの追加
3.jsonエクステンションの追加
4.スクリプトエンジンの性能改善
5.HEADブランチに追加実装された新しい関数のマージ

 スクリプトエンジンの性能改善は,PHP 5.1においても行われており,PHP 5.0に比べて実行速度が大幅に改善されている。PHP 5.1ではPHP 4.4に比べても全般的な高速化が図られているが,一部の機能では実行速度がPHP 4.4と比べて劣っていると言われており,PHP 5.2において改良される予定となっている。スクリプトエンジンの改良に伴い,PHP 5.1用に構築されたエクステンションは再コンパイルが必要となる可能性がある。

 PHP 5.2は,今後,数カ月のうちにリリースされる見込みである。PHP 5.2.0のリリース後,PHP 5.1系については(致命的なバグがない限り,)PHP 5.0系と同様に新たなリリースは行われない見込みである。

PHP 5.1.3,PHP 5.1.4相次いでリリース

 PHP 5.1.3が4月28日に正式公開された。このバージョンでは,PHP 5.1.2のリリース以降に見つかった130件以上のバグが修正されており,若干の機能追加も行われている。

 主な変更点を以下に示す。

1.一部のエクステンションの改良
 SPL,SimpleXML,Reflection API,cURL,GDエクステンションにおいて関数の追加などの改良が行われている。
2.PCREライブラリの更新
 バンドルされているPCREライブラリが最新のバージョン(6.6)に更新された。
3.FastCGIインターフェイスの再実装
 従来バンドルされていたコードに関するライセンス上の問題を解消するためFastCGIのインターフェイスが一から書き直され,再実装された。

 修正されたバグの中には,以下のセキュリティ上の問題に関するものが含まれる。

1.phpinfo()関数に4096バイト以上の長い入力が指定された場合のクロスサイトスクリプティングの脆弱性
2.wordwrap()関数内にバッファオーバーフローの脆弱性
3.tempnam()関数の2番目の引数により親ディレクトリにアクセスされる脆弱性
4.セッション名へ不正な文字を挿入されてしまう問題
5.substr_compare() 関数のオフセット/文字列長に大きな数を指定されるとPHPがクラッシュする問題

 また,後述する不正にエンコードされたマルチバイト文字列の検出に関するmbstringの変更も行われている。

 しかしながら,PHP 5.1.3のリリース後に,マルチパートMIMEエンコードされたPOSTパラメータを正しく取得できないという致命的なバグが見つかり,急遽,PHP 5.1.4が5月4日にリリースされた。PHP 5.1.4ではこのバグを含む6件のバグが修正されている。

 PHP 5.1.3およびPHP 5.1.4における変更点の詳細については,ChangeLogを参照いただきたい。PHP 5.1.4では,セキュリティ上の問題を含む多くのバグの修正が行われている。PHP 5を使用するユーザーは早期のバージョン更新が推奨されている。