CakePHP 2.3.3 変更点
概要
- 公式アナウンス
- セキュリティリリース
- 2.3以降を使用し、SecurityComponent なしで、AuthComponent を使用している場合、認証を回避できてしまうのを修正
- 詳細は、影響が大きいためユーザーのアップデート後に公表されるようです。
主な変更点
- [.travis.yml] socket exception 回避のため、node.js の替わりに lighthttpd を使用するよう変更
- [lib/Cake/Utility/CakeTime::fromString] DateTime クラスのインスタンス生成後に、スクリプト実行中に変更されたタイムゾーンが反映されるよう変更
- [lib/Cake/View/Helper/FormHelper::inputs] _introspectModel メソッドが配列以外を返す場合があり、それを引数とする array_keys は配列を期待しているため、エラーが発生するのを回避するよう強制的に配列へキャストするよう変更
- Model::$schema が不完全な場合(DBを使用しないときに、ちゃんと$schemaを定義していない)に、null を返す
- [lib/Cake/View/Helper/FormHelper::_maxLength] html5 の number フォームは、maxlength 属性をサポートしていないのを反映
- [lib/Cake/View/Helper/FormHelper::select] 独自の name 属性を設定した場合、_secure メソッドがそれを考慮するよう変更
- _initInputField メソッドを経由しているフォームは考慮されていた
- [lib/Cake/Utility/File::exists] ファイルへの追記を行った際、ファイルサイズが更新されていなかったのを修正
- size メソッドを呼ぶ際に呼ばれる exists にて、clearstatcache(ファイルのステータスのキャッシュをクリア)するようになった。
- PHP5.3以上の場合、clearstatcache にてキャッシュがクリアされるのは、該当ファイルのみに限定されるようになり、パフォーマンスの向上が期待できる
- リファレンスを返していた関数の「$」を撤去
- [app/Config/core] 使用されていない定数 define('LOG_ERROR', LOG_ERR) を削除
- [lib/Cake/Network/Http/HttpSocket::_buildHeader] Cookie の送信際に、「key => value」形式をサポート
- 1次元だけをサポート
- [lib/Cake/Model/Datasource/DboSource::_parseKey] collate(デフォルトの照合順序を無効にする)節のような変わったものを指定し、かつ、演算対象対象を複数の場合、「=」の替わりに「IN」が選ばれるよう修正
- [lib/Cake/Controller/Controller::loadModel] $uses = true を指定した時、Model がロードされないよう、in_array の第3引数に true を指定し、型チェックを強化するよう変更
- [lib/Cake/Model/Model::save] model または behavior の beforeSave メソッドでデータソースの変更を許容するようになった
- デフォルトがスレーブを参照していて、 beforeSave 時に、参照先をマスターに切り替える処理を行ったときを想定
- データソースの確定は、beforeSave 前に行われ、その後は考慮されなかった。
- beforeSave 時にデータソースを変更した場合、$this->getDataSource() を行っても、Model::save へ伝える手段がなかった(save メソッド内では、$db 変数でデータソースを保持している)
- [lib/Cake/Console/cake] composer で CakePHP をインストールした場合、Vendor/bin/cake が動作しない不具合を解消
- SecurityComponent なしで、AuthComponent を使用している場合、認証を回避できてしまうのを修正