Ответ на ваш конкретный вопрос, в чем заключается проблема, заключается в том, что по умолчанию PHP хранит свои сессии в файлах в файловой системе. Для одного веб-сервера, обслуживающего запросы, это не проблема, потому что данные вашего сеанса всегда будут доступны. Но что, если у вас есть два веб-сервера с балансировкой нагрузки, обслуживающих запросы?
Представьте, что вы обращаетесь к первому веб-серверу с запросом, который создает файл сеанса в его файловой системе. Затем ваш следующий запрос попадает на второй веб-сервер. Второй веб-сервер, конечно, не увидит файл сессии. Для пользователя вы можете войти на веб-сайт, а затем внезапно выйти из системы.
Это не проблема, специфичная для PHP, и очень распространенная. Решение состоит в том, чтобы хранить данные сеанса в некоторой общей области. Наиболее распространенным способом для этого является сохранение данных сеанса либо в базе данных, доступной для всех веб-серверов, либо на каком-либо сервере кеша общей памяти, например memcached.