Просто проверьте политику Safari в отношении файлов cookie.
Похоже, ваш браузер просто не отправляет cookie с идентификатором сессии.
Если я проверяю идентификатор сессии, он дает мне идентификатор
Это не сам идентификатор сессии, что вы должны проверить.
Но скорее , если идентификатор сеанса такой же, как и раньше
если он такой же, то с вашим кодом что-то есть.
Вы должны начать отлаживать его.
Начните с запуска тестового файла с этим кодом:
<?php
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Counter ".$_SESSION['counter']++." раз.<br>
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">reload</a>";
?>
если это работает, сделайте это
<?php
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Counter ".$_SESSION['counter']++." раз.<br>
<a href=".$_SERVER['PHP_SELF'].">reload</a>";
?>
и найдите способ просмотра протокола обмена HTTP. Это самое главное - посмотреть, какие куки идут с сервера и обратно. Я не знаю инструмента для сафари, но должен быть один