El mensaje que te da es porque se ha enviado al navegador información antes de llamar a session_start(). Esta función exige que no se haya enviado nada al navegador previamente, de lo contrario falla, como te está pasando.
Algunas formas de enviar información al navegador:
- Escribiendo código HTML fuera del código PHP. En realidad, cualquier caracter fuera de las etiquetas <? ?> se envía al navegador.
- llamando a la función echo
- llamando a la función var_dump()
- llamando a la función header()
Dado que no haces ninguna de las 3 últimas, lo más probable es que tengas algún carácter antes de <?. Aunque no lo veas, algunos editores insertan caracteres ocultos. Mira a ver si tu editor te permite ver los caracteres ocultos. También puedes crear el fichero con el notepad (bloc de notas) y reescribir el código.
No sé si a alguien se le ocurre algo más que pueda estar mandando datos al navegador antes de la llamada a session_start(), pero yo no veo nada más.
Salu2,
Carlos.