Ciò si verifica in genere quando è presente un output non intenzionale dallo script prima di avviare la sessione. Con il tuo codice attuale, potresti provare a utilizzare il buffer di output per risolverlo.
prova ad aggiungere una chiamata a ob_start();
funzione nella parte superiore dello script e ob_end_flush();
alla fine del documento.