session_start(); deve essere la prima riga di codice della pagina..
..altrimenti non va!
Non è proprio così.
Session_start() deve essere chiamata prima di qualsiasi output.

Cioò significa che se scrivo
echo 'ciao';
session_start();
mi verrà restituito un errore.

Il suo caso però è diverso (credo, sto andando a senso!).

Se lui definisce il nome di una sessione senza prima aprire la sessione stessa è normale che non funzioni!

Cmq come ti ha suggerito ghiacciato inverti l'ordine tra session_start() e session_name().
Io cmq utilizzerei solamente session_strat() e assegnerei le variabili tramite l'array di sessione $_SESSION.