Май
06
2022

Не работают сессии в PHP Битрикс

Столкнулся с проблемой: в битрикс не работают сессии. Функция bitrix_sessid() каждый раз выдает новую строку. В админке авторизация работает, но никакой ajax функционал - нет. Везде ошибка что сессия не верная, при этом проблема плавающая. То ошибка есть, то само по себе начинает работать.

Проблема оказалась просто в том, что на сервере закончилось свободное место на диске.

Чтобы долго не сидеть и не гадать в чем у вас проблема, выкладываю скрипт. Сохраните его в корень сайта, например с именем test.php и запустите из браузера:

<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

if (! session_start()) {
    die('can not start session');
} else {
    echo '<pre>session start: ok' . PHP_EOL;
}

echo 'session_id(): ';
var_dump(session_id());

echo '$_COOKIE["PHPSESSID"]: ';
var_dump($_COOKIE['PHPSESSID']);

echo 'count($_SESSION): ';
var_dump(count($_SESSION));

echo '$_SESSION["a"]: ';
var_dump($_SESSION["a"]);

echo '$_SESSION["a"] = 1';
$_SESSION["a"] = 1;

Сессия должна стартовать, в session_id() должна быть какая-то строка, та же что и в $_COOKIE['PHPSESSID']. При перезагрузке страницы id сессии не должно меняться.

После второй перезагрузки страницы $_SESSION["a"] должно быть установлено в 1.

Вывод ошибок включен, если что - PHP напишет что не так. Я получил ошибку No space left on device (28), что говорит о том, что не хватает места на сервере.

Пожалуйста, оцените на сколько вам понравилась статья!
Голосов: 10 Среднее: 3.9