我收到此错误:
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));}}}}