Предыстория:
Руководитель проекта сообщил, что пользователь жалуется. Он логинится, передвигается по сайту и вдруг оказывается снова на странице авторизации. Проверили production-сервер и development . Никаких проблем не обнаружили. Но при добавлении очередной фичи , понадобилось проверить production-сервер в IE. И вот оно... Все как говорил пользователь, проходишь авторизацию, начинаешь бродить или даже просто делать refresh страницы - оказываешься на странице аутентификации, куда попадает только незалогиненный пользователь. Делаем вывод, куда-то потерялась сессия. Причем, проблема повторялась на всех доступных версиях IE.
Проверяю на development-сервере и на рабочей машине. Проблем нет. Значит дело 100% не в коде, нужно смотреть настройки сервера. Начинаю искать проблему. В основном попадается околотхенический бред. В конце концов натыкаюсь на то, что нужно.
http://swfupload.org/forum/
http://simply.com.au/blog/
Рецепт прост, меняем конфигурацию патча для php suhosin:
suhosin.session.cryptua = off
suhosin.session.encrypt = off
Если вы не имеете доступ к php.ini, вы можете внести эти изменения через .htaccess или в самом коде через ini_set
По умолчанию эти опции включены. То бишь, проблемы возникли именно из-за suhosin и его шифрования сессии на уровне движка php. К сожалению не нашел более полного описания этой проблемы и возникает она не со всеми версиями. На машине, где возникла проблема стоял suhosin patch 0.9.32.1 На моей рабочей машине 0.9.10, на ней никаких проблем не возникает.