Advertencia de PHP: session_start (): no se puede iniciar la sesión cuando los encabezados ya se enviaron

3 minutos de lectura

Recibo un error en mi registro de wp-debug que dice “Advertencia de PHP: session_start (): no se puede iniciar la sesión cuando los encabezados ya se enviaron en … ganchos.php en la línea 228”. Aquí hay un fragmento de código del archivo

function _action_fw_flash_message_backend_prepare() {
            if ( ! session_id() ) {
                session_start();    
            }
        }

sesión_inicio(); está en 228. He leído que session_start debería ser la primera línea de código que se ejecutará en el archivo. ¿Esto no afectará la funcionalidad del código? (Tengo cero experiencia en PHP)

  • las llamadas a session_start deben estar en la parte superior del script antes de que cualquier contenido html se envíe al navegador

    – Profesor Abronsius

    28 de febrero de 2018 a las 7:22

  • ¿Responde esto a tu pregunta? Cómo corregir el error “Encabezados ya enviados” en PHP

    – showdev

    21 mayo 2021 a las 18:22

avatar de usuario
Raúl

Mueve el session_start() a la parte superior de la página. y ob_flush();en el pie de página o al final del guión.

<?php
@ob_start();
session_start();
?>

  • ¿Cuál es el problema y cómo ayuda su código?

    – showdev

    21 mayo 2021 a las 18:24

Muy bien chicos,

Aquí está la respuesta que funciona para mí en 000webhost

Si es trabajo para ti, no olvides irte comentario y toca votar a favor

Ir public_html->.htacess

abrir documento

pega esto

php_flag output_buffering on;

BOOM es trabajo.

  • PHP Output Buffering cambia el comportamiento de PHP para enviar todos los datos de una sola vez en lugar de enviarlos tan pronto como estén listos. Por lo tanto, los encabezados ya no se pueden enviar, por lo tanto, no hay error. Pero puede ralentizar el sitio ya que se debe hacer PHP antes de enviar algo.

    – Jon

    19 de abril de 2021 a las 13:51

  • ¿Cuál es el problema y cómo ayuda su código?

    – showdev

    21 mayo 2021 a las 18:24

avatar de usuario
Samuel Ramzán

Después de actualizar a PHP 7.4, comencé a tener el mismo mensaje de error, incluso si tenía todas mis etiquetas y scripts en el lugar correcto. El problema para mí estaba en la codificación del documento, era como UTF-8así que lo cambié a UTF-8 sin lista de materiales y eso lo hizo. Todo está bien ahora.

Para mí, el problema real era un espacio al inicio del archivo PHP antes de la etiqueta PHP. El siguiente código debería ser la primera línea de su archivo PHP.

<?php session_start(); ?>

El problema ocurre cuando escribe algún código Html o incluso un espacio antes del código anterior, PHP envía su código HTML al navegador, por eso da el error de que el encabezado ya se envió al navegador.

he estado usando Administrador de sesión de WP para todos mis proyectos. Elimina toda la molestia de crear una sesión y puede usar $_SESSION llama a cualquier parte de su código. Como han indicado los otros comentarios, para iniciar una sesión, debe ejecutar el session_start() función antes de que se establezcan sus encabezados, así que use el gancho plugins_loaded para ejecutar su función.

function _action_fw_flash_message_backend_prepare() {
    if ( ! session_id() ) {
        session_start();    
    }
}

add_action( 'plugins_loaded', '_action_fw_flash_message_backend_prepare' );

avatar de usuario
vinuales

Hazlo aparte. Abra y cierre su secuencia de comandos de encabezado php de esta manera:

<?php

session_start();

  if($_SESSION['Active'] == false){ /* Redirects user to login.php if not logged in */
    header("location:../index.html");
    exit;

        }
?>

avatar de usuario
Kelvin

Tuve el mismo problema, encontré la solución para mí y es bastante simple:

El archivo php debe comenzar con <?php y nada más antes de eso. En mi caso tenia un espacio antes <?php; después de eliminarlo, el error desapareció.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad