CodeIgniter версии 3.x: загрузка библиотеки «Session» сообщает о потере ini_set - PullRequest
0 голосов
/ 23 сентября 2018

Я использую Codeigniter 3.0.1 в установке Wamp64 (PHP Ver 5.6.19, Apache 2.4.18) на Windows Server 2012 R2.Когда у меня есть строка:

$autoload['libraries'] = array('session');

in autoload.php я получаю следующую ошибку при запуске моего приложения:

ini_set () Сессия активна Вы не можете изменитьНастройки ini модуля сеанса в это время.Имя файла: library / Session.php Номер строки: 313

Если я возьму эту строку из autoload.php и вставлю следующую строку в функцию contructor контроллеров, которые фактически используют данные сеанса:

$this->load->library("Session")

Я получаю ту же ошибку, но только при запуске одного из этих контроллеров.

Я рассмотрел несколько ответов на этот вопрос на stackoverflow:

  • Есть ли у вас session_start () в вашем php-коде: НЕТ - я искал все фрагменты кода, включенные в этот проект, и нигде нет session_start ()
  • У вас установлено значение session.auto_start, равное 0 (ноль) в php.ini - ДА

Ни один из этих ответов не решает мою проблему.

Информация о сеансе записывается в C:\temp на сервере.Я вижу, что файл создается, когда я запускаю контроллер, который сначала загружает библиотеку Session, поэтому веб-сервер, похоже, имеет доступ на запись в папку C:\temp.

Другая интересная вещь заключается в том, что у меня нет проблем сустановка на моем тестовом сервере (Windows 7, php версия 5.6.32)

Может кто-нибудь предложить какие-либо предложения?Спасибо!

Еще одна информация: это было обновление с 2.x до 3.0.Я удалил подпапку \ system и заменил ее папкой V3 \ system.

1 Ответ

0 голосов
/ 01 октября 2018

Нашли его.

Проблема заключалась в том, что библиотека Ajax (Sijax), внешняя по отношению к Codeigniter, создавала экземпляр класса, чтобы методы могли вызываться через Ajax. new (class) снова вызвал загрузку класса Session, который прошел инициализацию и попытался снова создать сеанс.

Я удалил автозагрузку класса Session и перенес ее загрузкуКлассам, которые требуют этого, сначала проверяют, существует ли Класс, прежде чем вызывать загрузчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...