読者です 読者をやめる 読者になる 読者になる

CakePHPでセッションハンドラにMemcacheを使おうとしたらハマった

cakephp

CakePHP2.4、php5.5でセッションハンドラにMemcacheを使おうとしたら、落ちました。

原因はsession.auto_startの指定

セッションの設定を1つずつ見ていったところ、わかりました。

session.auto_startはphp5.5.2と5.4.20からPHP_INI_PERDIRに変わったため、
プログラム側でini_set()できなくなり、CakePHPからセットしてはダメだったのが理由でした。

core.php

<?php

Configure::write('Session', array(
  'defaults' => 'cache',
  'cookie' => 'SESSION_NAME',
  'timeout' => 240,
  'autoRegenerate' => true,
  'checkAgent' => true,
  'ini' => array(
    'session.use_cookies' => '1',
    'session.cookie_lifetime' => '0',
    'session.cookie_path' => '/',
    // 'session.auto_start' => '0', // ←コレを指定したらダメ!
    'session.use_trans_sid' => '0',
    'url_rewriter.tags' => '',
    'session.cookie_domain' => '.hogehoge.com',
    'session.save_handler' => 'user',
    'session.cookie_httponly' => '0',
    'session.cookie_secure' => '0',
  ),
  'handler' => array(
    'engine' => 'CacheSession',
    'config' => 'default',
  ),
));

Cache::config('default', array(
  'engine' => 'Memcache',
  'duration' => '+3 hours',
  'prefix' => 'session:',
  'servers' => array('localhost:11211'),
));