Есть сайт на wordpress (не знаю, имеет ли это значение). Раньше всё было в порядке, но вдруг стали барахлить сессии: данные между страницами не сохранялись. Исследование показало, что сбрасывается session_id (каждый раз новый при обновлении страницы):
var_dump(session_id());
при этом файлы сессий тоже каждый раз создаются новые, а старые не удаляются.
Причём этот баг нестабильный: может исчезать и появляться при изменении кусков кода, не связанных с сессиями напрямую. Например, одно время работало добавление вот этого куска кода в functions.php, и я без понятия, почему (Точно помогало: проверял на разных браузерах. Если убрать этот кусок и открыть на новом браузере или компьютере, баг возвращался. Если снова добавить, начинало работать. Снова убрать и открыть на уже использованном браузере - работать не прекращало):
if (!isset($_SESSION["test2"])) {
echo '<script></script>';
$_SESSION["test2"] = 1;
}
Сессии инициируются сверху functions.php так (домен за***):
ini_set('session.cookie_domain', '***.***.ru');
ini_set('session.use_trans_sid', 1);
session_set_cookie_params(36000, "/", "***.***.ru", false, false);
session_start();
Первые две строчки помогали людям с такой же проблемой. Мне не помогли.
Также стоит отметить:
- Ошибка происходит во всех основных браузерах, в самых обычных условиях обновления страницы. Никаких ajax, редиректов, выключенных куки в браузере.
- session_destroy в теме сайта нигде нет. Не могу поручиться за ядро wordpress.
- favicon.ico (говорят, её отсутствие может привести к этой ошибке) на сайте формируется wordpress (в настройках внешнего вида загрузкой большого png изображения).