PHP 5.2.0が2006年11月2日にリリースされた。機能拡張だけでなく,200を超えるバグフィックスも行われている。ここにはセキュリティ・ホールへの対応も含まれているため,速やかにアップグレードすることが望まれる。
PHPリリース関連情報
PHP 5.2.0にて搭載された主な新機能
PHP 5.2.0は最初にRC版が公開されてから3カ月以上の期間を経て,リリースされたPHPの最新版である。PHP 5.1系と比べて,数多くの新しい機能が搭載されたため,まずは主な新機能の特徴を紹介していく。
・ パフォーマンス向上と,より正確なメモリー利用状況のトラッキングを備えたメモリーマネージャの採用。
PHPの実行エンジンであるZend Engineにおいて,新しいメモリーマネージャが実装された。これにより,PHPが大きなブロック単位でメモリーの割り当てを行い,そのヒープをPHP自身で管理するようになる。
この副作用として,PHPが正確にメモリー消費量を測定できることから,以前の バージョンと比べて見かけの消費量が増加するようになった。これに伴い,PHP スクリプトの最大メモリー使用量を制限するための設定値であるmemory_limitの初 期値が,8メガバイトから16メガバイトに増加している。既存の環境から移行す る人は,php.iniにてmemory_limitの値を増加することを検討した方が良いであ ろう。
・ Filter,JSON,Zipエクステンションの追加。
3個のエクステンションが追加され,特に指定しない限り使える状態になっている。これらのエクステンションは,同時にPECLにて配布されるため,PHP 5.1以前のユーザーも,手動でインストールして利用できる。
Filterエクステンションは,ユーザーの入力バリデーションを行うための機能である。JSONエクステンションは,JSON(JavaScript Object Notation)形式のデータフォーマットを読み書きするための機能である。Zipエクステンションは,Zip形式のファイルの読み書きを実装するための機能である。
後ほど,JSONエクステンションについて使い方を紹介する。
・ ファイルアップロード状況をトラッキングするための機能を実装。
PHP本体に,ユーザーがアップロードしたファイルの進捗状況をトラッキングするためのフックが実装された。エクステンション側がこの機能に対応することで,ユーザーにアップロードの進捗状況を表示するページを作成できる。
後ほど,この機能に関して使い方を紹介する。
・ 日付/時間情報を操作する,DateTimeとDateTimeZoneクラスの搭載。
PHP 5.1では日付に関係する多くの変更が行われるとともにDateクラスが導入され物議を醸したが,PHP 5.2ではDateTimeとDateTimeZoneクラスが新たに導入された。
修正されたセキュリティ・ホール
多くの新機能と同時に,多くの不具合についても修正が行われた。その数は200を超えており,今回はその中でも大きな内容を紹介していく。
・ PDOおよびPostgreSQLエクステンションにおける,PostgreSQL用エスケープ関数の追加。
これまでPostgreSQL専用のエスケープ関数は用意されていなかったが,今回からpg_escape_string関数とpg_escape_bytea関数が追加された。
・ php.iniにおいてallow_url_include設定項目の追加。
includeやrequire関数を使う際に,URL先の読み込みを許可するかどうかを設定できるようになった。以前のバージョンでは,allow_url_fopen設定項目があり,こちらはデフォルトで有効(On)であった。PHP 5.2では,allow_url_fopen設定項目とは別にallow_url_include設定項目が用意され,デフォルトが無効(Off)にセットされている。リモート・コード・インジェクション危険性があるため,特別な理由がない限り無効のままで運用することが推奨される。
PHP 5.2.0では,上記に挙げた以外にも数多くの変更が行われている。それらの変更点や,追加された関数,クラスの詳細については,PHP 5.2 UPDATE INFOを参照すると良いだろう。