CakePHP2で「serialization of closure is not allowed」のエラー表示対策

CakePHP




CakePHPでプログラミングをしていると、「serialization of closure is not allowed」というエラーが表示されるようになった。最初は問題無かったのにいろいろと触っていると表示されるようになったわけです。

これはDebug Kitを導入していると表示される場合があるもののようです。

CakePHP2へのDebug Kitの導入方法

まず、CakePHP2へのDebug Kitの導入方法から。

Debug Kitのダウンロードと設置

まず、下記のURLからDebug Kitをダウンロードします。利用するCakePHPのバージョンによってファイルが違うのでreleasesをクリックして該当するバージョンをダウンロードします。

https://github.com/cakephp/debug_kit

ダウンロードしたら、解凍したフォルダ名をDebugKitにして、導入するCakePHPのフォルダにapp/Plugin/DebugKitとして設置します。

Debug Kitを読み込む

bootstrap.phpとAppController.phpに読み込み設定を記述します。

app/Config/bootstrap.phpに以下の内容を追記します。

CakePlugin::load('DebugKit');

app/Controller/AppController.phpにコンポーネントを追記します。

class AppController extends Controller {
	public $components = array('DebugKit.Toolbar');
}

デバッグレベルを1以上に設定する

Debug Kitはデバッグレベルが1以上の時に動作するので、app/Config/core.phpを確認しておきましょう。

Configure::write('debug', 2);

以上の設定で動作するわけですが、問題のエラーが表示されるようになったので対策しましょう。

「serialization of closure is not allowed」のエラー表示対策

 

Degub Kitを使用していて、もし「serialization of closure is not allowed」というエラーがでた場合は、上で設定したapp/Controller/AppController.phpを以下のように修正してみてください。

class AppController extends Controller {
	public $components = array(
		'DebugKit.Toolbar' => array('panels' => array('history' => false))
	);
}

これで私は解決しました。

間違ってたら簡便な!