Предупреждение: session_destroy(): попытка уничтожить неинициализированный сеанс с помощью phpCas

Сегодня я сталкиваюсь с проблемой библиотеки phpCas https://wiki.jasig.org/display/CASC/phpCAS.

Проблема заключается в следующем, когда я пытаюсь использовать функцию выхода из системы, я получаю сообщение

Warning: session_destroy(): Trying to destroy uninitialized session

После быстрого просмотра кода библиотеки phpCas мне удалось выяснить, откуда возникла проблема, вот фрагмент функции выхода из системы:

session_write_close();
header('Location: '.$cas_url);
phpCAS::trace("Prepare redirect to : ".$cas_url);
session_unset();
session_destroy();

Кажется, проблема в том, что session_write_close() на самом деле закрыть сеанс тогда session_destroy() не могу работать

Пытался поставить session_write_close() в комментарии и работал как шарм, но это приводит к двум вопросам:

  • Проблема действительно идет оттуда? Или это должно работать?

  • Если проблема действительно возникла, почему она там и никто не жалуется? Мысль phpCas была известной библиотекой, используемой многими.

3 ответа

Решение

Похоже, вы проверили основную ветку (2af859ff76) - только что проверили, и в ней есть ошибка. Вам следует:

  • Проверьте одну из веток релиза, например 1.3-stable
  • Зарегистрируйте эту ошибку с автором

Вам нужен session_start(); прежде чем вы сможете уничтожить его

Кроме того, заголовок ("Местоположение...) отправляет заголовки, поэтому вы не можете закрыть сеанс впоследствии. Выполните перенаправление после закрытия сеанса

Поскольку руководство предполагает, что "session_write_close - запись данных сеанса и завершение сеанса", вы получаете справедливое предупреждение. так как сессия уже закрыта

FYI

Другие вопросы по тегам