CakePHP 错误:无法配置会话,设置session.auto_start失败


CakePHP Error: Unable to configure the session, setting session.auto_start failed

我收到此错误:

Error: [CakeSessionException] Unable to configure the session, setting session.auto_start failed.

我正在使用 Cakephp 2.2.4。

编辑

似乎这家伙有同样的问题:实时网站上的 Cakephp 会话错误并使用它

if(!isset($_SESSION)) session_start(); 

beforefilter AppController修复错误的方法。

所以我的问题是:为什么会这样?一切正常,然后突然出现了此错误。此外,我意识到文件夹app/tmp/sessions为空,并且已将会话配置为由Cake处理(Config/core.php年)。

Andriy Struk的回答是正确的。 他说:所以你有3个主要选择:升级CakePHP,降级PHP,或者使用标准的PHP会话。

但是还有第四个选项,您可以简单地注释掉/lib/Cake/Model/Datasource/CakeSession.php中的一行(大约第 557 行):

// 'session.auto_start' => 0,

这将停止 Cake 在该设置上调用ini_set(),并防止致命错误。

在 PHP 版本 5.4.19 中 - 开发人员关闭了从用户脚本设置session.auto_start选项的功能。

CakePHP 仅在 2.4.0 版本中从默认会话配置中删除了此选项。

所以你有3个主要选项:升级CakePHP,降级PHP,或使用标准php会话。

正如Andriy的回答所说,你应该升级CakePHP或降级PHP。但是,如果您不想或没有选择,则需要重新配置 Cake 会话,使其使用标准 PHP 会话而不是 Cake 的会话。

应用程序/配置/核心.php

Configure::write('Session', array(
    'defaults' => 'cake', // You need to change the value of this to 'php'
    'timeout' => 120,
    'cookieTimeout' => 20160,
    'checkAgent' => false 
));

在 php.ini 文件中,尝试将session.auto_start设置为 1。

由于我没有足够的声誉来评论,因此除了西蒙的答案之外,我还添加了以下答案:

为了让它工作,我不得不注释掉所有三个出现的 'session.auto_start' => 0(在 CakeSession.php 中第 557 行前后)

有关详细信息,请参阅 CakePHP 团队的以下补丁:https://github.com/cakephp/cakephp/commit/faa2cbd3c3fc1bbf83064727847789123110b8e3#diff-bd8dc176fa0f41743dbaafa75f77b5ae

找到下面的代码并注释所有行

/lib/Cake/

Model/Datasource/CakeSession.php

if (empty($_SESSION) && !headers_sent() && (!function_exists('session_status

') || session_status() !== PHP_SESSION_ACTIVE)) {if (!empty($sessionConfig['ini']) && is_array($sessionConfig['ini'])) {foreach ($sessionConfig['ini'] as $setting => $value) {if (ini_set($setting, $value) === false) {抛出新的 CakeSessionException(__d('cake_dev', '无法配置会话, 设置 %s 失败.', $setting));}}}}