Ошибка CakePHP: невозможно настроить сеанс, не удалось установить session.auto_start
Я получаю эту ошибку:
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
).
Ответы
Ответ 1
В PHP версии 5.4.19 - разработчики закрыли возможность установки параметра session.auto_start из пользователя script.
CakePHP удалил эту опцию из конфигурации сеанса по умолчанию только в версии 2.4.0.
Итак, у вас есть 3 основных варианта: обновить CakePHP, понизить PHP или использовать стандартный сеанс php.
Ответ 2
Ответ Андрея Струка правильный. Он сказал: Итак, у вас есть 3 основных варианта: обновить CakePHP, понизить PHP или использовать стандартные сеансы PHP.
Но есть 4-й вариант, вы можете просто прокомментировать одну строку в /lib/Cake/Model/Datasource/CakeSession.php
(около строки 557):
// 'session.auto_start' => 0,
Это останавливает вызов Cake ini_set()
в этой настройке и предотвращает фатальную ошибку.
Ответ 3
Как Андрей отвечает, вы должны обновить CakePHP или понизить PHP. Однако, если вы не хотите или не имеете этого, вам нужно перенастроить сеанс Cake, чтобы он использовал стандартные сеансы PHP, а не сеанс Cake.
приложение /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
));
Ответ 4
В файле php.ini попробуйте установить session.auto_start
на 1.
Ответ 5
поскольку у меня недостаточно репутации для комментариев, я добавляю следующий ответ в дополнение к Simon one:
чтобы заставить его работать, мне пришлось прокомментировать все три 'session.auto_start' = > 0
(вокруг и после строки 557 в CakeSession.php)
Подробнее см. следующий патч команды CakePHP:
https://github.com/cakephp/cakephp/commit/faa2cbd3c3fc1bbf83064727847789123110b8e3#diff-bd8dc176fa0f41743dbaafa75f77b5ae