Извините, но это не функция, а туфта.
Главная проблема всех программистов-любителей в отсутствии логики. Вы делаете утверждения, которые вообще никак не следуют из приведённой информации. А зачастую и противоречат ей.
Чтобы утверждать, что не работают именно куки, а не что-то ещё, в "функции" не должно быть никаких "$keys", "$a" и "$_SESSION". Это самая простейшая, базовая логика. Если мы проверяем какой-то функционал, то проверяем только его. Не внося никаких дополнительных сущностей.
Учитывая, что сессионная кука ставится, это означает, что куки работают. А не работает "функция". И разбираться надо с ней. С помощью отладки.
В принципе, неплохо проверить содержимое всех этих $keys", и "$_SESSION". Но в первую очередь надо сравнить НТТР заголовки, устанавливающие и ту и другую куку. При проблемах с куками надо смотреть не в Storage, а в Request. Там написано, какие и как именно куки ставятся, и какие куки браузер возвращает. И вот там-то и надо смотреть. А если самому непонятно, то в своем вопросе привести все заголовки Set-cookie из запроса. А не "функцию".