На самом деле, это не есть полностью правильное решение.
Механизм работы сессий примерно таков: сессии храняться в темповой директории. При старте сессии (session_start) по иднтификатору сессии находится нужный файл и устанавливаются переменные сессии. При этом может запуститься, а может не запуститься (в зависимости от значения session.gc_probability) 'сборщик мусора'. Если он запускается, то он убивает все сессии, доступа к котоым не было в течении session.gc_maxlifetime секунд.
Тоесть, если сборщик мусора запуститься из какого либо другова скрипта, где не ini_set, твоя сессия умрет.
Самое интерересное, и не очень понятное для мня - это то, то сначала инициализируется сессия, и только потом запускается сборщик.