La documentazione ufficiale di PHP raccomanda un approccio specifico nella rigenerazione di una nuova sessione.
La soluzione è la seguente:
function my_session_regenerate_id() {
$new_session_id = session_create_id();
$_SESSION['new_session_id'] = $new_session_id;
$_SESSION['destroyed'] = time();
session_commit(); // Chiude la sessione corrente
session_id($new_session_id); // Apre la nuova sessione
ini_set('session.use_strict_mode', 0);
session_start();
ini_set('session.use_strict_mode', 1);
unset($_SESSION['destroyed']);
unset($_SESSION['new_session_id']);
}