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

Posted

技术标签:

【中文标题】CakePHP 错误:无法配置会话,设置 session.auto_start 失败【英文标题】:CakePHP Error: Unable to configure the session, setting session.auto_start failed 【发布时间】:2013-10-01 00:25:54 【问题描述】:

我收到此错误:

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

我使用的是 Cakephp 2.2.4。

编辑

这家伙似乎有同样的问题:Cakephp Session error on live site 并使用这个

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

AppControllerbeforefilter方法内修复错误。

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

【问题讨论】:

不知从何而来。更新到最新版本的 Cake 修复了它,似乎他们可能在会话设置上做了一些工作...... @bateman_ap 好的,我试试 @bateman_ap 哪个版本? @BadHorsie 最新(现在是 2.4.2) 感谢您的回答,我有蛋糕可以重定向到他自己而不会停止并且浏览器显然会断开连接。幸运的是有很多 exit('ciao');从 index.php 开始,我发现调用会话写入后代码中断,因为我更改了服务器上的 PHP 版本。 【参考方案1】:

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

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

// 'session.auto_start' => 0,

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

【讨论】:

这种实现方法有什么缺点吗? 我还没有找到。我不相信在脚本中可以更改此设置,只是自从 PHP 5.4.19 版以来它现在实际上失败了,而不是默默地什么都不做。 为我工作,但我想知道这种方法是否有任何限制,会话现在是否容易受到攻击? 不,这样做没有安全性或可靠性问题。正如我在上面的评论中提到的,我认为这条线实际上并没有起到任何作用。它以前默默地失败,但现在在更新的 PHP 版本上抛出错误。【参考方案2】:

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

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

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

【讨论】:

升级 CakePHP 解决了我的问题。百万感谢这个答案:)【参考方案3】:

作为Andriy's answer says,您应该升级CakePHP 或降级PHP。但是,如果您不想或没有选项,则需要重新配置 Cake 会话,以便它使用标准 PHP 会话而不是 Cake 的会话。

app/Config/core.php

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

【讨论】:

谢谢。是的,我正在使用 1&1 共享主机。我想我必须邮寄给他们。【参考方案4】:

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

【讨论】:

不是一个理想的解决方案,但绝对是一个有效的解决方案。【参考方案5】:

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

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

详情请参见 CakePHP 团队的以下补丁: https://github.com/cakephp/cakephp/commit/faa2cbd3c3fc1bbf83064727847789123110b8e3#diff-bd8dc176fa0f41743dbaafa75f77b5ae

【讨论】:

以上是关于CakePHP 错误:无法配置会话,设置 session.auto_start 失败的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp v 0.2.9会话在24分钟后到期

Codeigniter 3 会话无法正常运行

如何设置最大登录用户 cakephp

Codeigniter 3.0 会话表名称为空字符串,因此出现错误

CodeIgniter,使用 Redis 作为会话管理器

具有两个模型会话的 Cakephp 身份验证组件