se debe a que session_start(); modifica los headers HTTP y por lo tanto no puede ser llamado después de que se han volcado datos a la salida del script, es decir, que no puedes llamar a session_start(); antes de ningún
echo ni de un bloque HTML.
Otro problema es que no puedes llamar a session_start(); más de 1 vez, puede deberse a consecuencia de los
includes múltiples que realices.
como norma session_start(); debe de ser una de las primeras llamadas del script (exceptuando
session_name() y
header() )
para garantizar compatibilidad con respecto a hosting configurados para sesiones automáticas (opción poco probable y no recomendable), o en el caso de varias llamadas a session_start() por medio de
includes, puedes colocar el
@ para evitar el típico mensaje de warning, y tu script será completamente funcional:
@session_start(); // y así evito los warnings