Не хочет установить id сессии в куки

В чем может быть дело, когда в куки не записывается id сессии?

При каждом обновлении страницы id сессии обновляется... введите сюда описание изображения

введите сюда описание изображения


Ответы (1 шт):

Автор решения: teran

При старте сессии кука с идентификатором отправляете клиенту и потом путешествует с каждым запросом туда-сюда.

Если с каждым запросом стартует новая сессия, следовательно кука где-то теряется. Вопрос в том, где именно. Может быть два пути - либо она не принимается клиентом, либо не доходит до сервера (в прочих вариантах скорее всего вы получите варнинги или ошибки в логе пхп (так что изначально при любой диагностике сначала смотрим логи)).

Откройте консоль браузера и гляньте в запросах, если кука уходит на сервер, то очевидно, она принялась, и на стороне клиента проблемы нет.

Далее посмотрите, принимается ли кука на сервере. Перед стартом сессии проверьте массив $_COOKIE. Если он пуст, то кука не дошла до пхп. Это может быть вызвано каким-либо кэширующим сервером на пути перед обработчиком пхп (в общем говоря, кто-то режет куки на этапе от получения сервером запроса, до фактической передачи запроса обработчику пхп (формально там может быть целая цепочка серверов)). В этом случае вы не увидите никаких ошибок в логах и т.п., запрос просто отфильтрован ранее и пхп ничего об этом не знает.

Но может быть ситуация, и когда дисковая квота израсходована, и при старте сессии пхп не может физически создать файл на диске, чтобы записать данные сессии. (либо другая квота (или ошибка записи), если сессии хранятся не в файлах, а в БД, например).
в этом случае, скорее проблему поможет определить просмотр логов (либо уровня приложения, либо уровня самого пхп)


банально если до старта сессии уже был ввод тела ответа, то заголовки вместе с куками уже не могут быт отправлены. так что формально это тоже можно отнести к этому вопросу. но в данном случае в логах пхп будут явные записи об этом (headers already sent)

→ Ссылка