Предупреждение: 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 - запись данных сеанса и завершение сеанса", вы получаете справедливое предупреждение. так как сессия уже закрыта