CakePHP 在蛋糕外继续会话

CakePHP continue session outside cake

我正在尝试在应用程序外部继续 CakePHP 会话。

CakePHP 会话配置:

Configure::write('Session', array(
    'checkAgent' => false,
    'defaults' => 'cake',
    'timeout' => 10080, // 1 week,
    'ini' => array(
        'session.cookie_httponly' => 1,
    )
));

cakephp_webroot/test_session.php:

<?php
session_name("CAKEPHP");
session_start();
var_dump($_SESSION);
?>

test session.php 应该输出蛋糕会话,但它不起作用。我已经验证了 cookie CAKEPHP 存在。

您正在使用 cake 默认值进行会话处理,它们与 PHP 默认值不兼容(可作为 php 用于 defaults 选项)。

cake 配置使用自定义保存路径并强制使用 cookie。

https://github.com/cakephp/.../Datasource/CakeSession.php#L600-L612

// ...
'cake' => array(
    'cookie' => 'CAKEPHP',
    'timeout' => 240,
    'ini' => array(
        'session.use_trans_sid' => 0,
        'url_rewriter.tags' => '',
        'session.serialize_handler' => 'php',
        'session.use_cookies' => 1,
        'session.cookie_path' => self::$path,
        'session.save_path' => TMP . 'sessions',
        'session.save_handler' => 'files'
    )
),
// ...

因此,要么将您的外部脚本会话使用配置为与 cake 默认值相同,要么使用 php 默认值,并通过您的 PHP ini 配置进行控制。

另见