Corregir error de “Warning: Cannot modify header information”

2 marzo, 2013
Jhonnyf

php_miniHaciendo un Script en php quize redireccionar al cliente y me doy con la sorpresa que me genera el siguiente error y no redirecciona, este es un error que generalmente lo encuentras cuando llamas a un archivo de funciones usando require o similar:

Warning: Cannot modify header information – headers already sent by (output started at /home/miweb/funciones.php:144) in /home/miweb/index.php on line 239

luego de leer mucho en internet definitivamente el problema es que en algun momento estoy enviando un echo, o print o algun dato al cliente y al tratar de redireccionar me lanza el error

luego de buscar un poco mi codigo me todo con lo siguiente en el archivo de funciones.php

y encontré cual era el bendito problema 😀

a simple vista no hay error pero en mi caso (y supongo que a muchas personas) es que luego de cerrar el ?> hay un espacio en blanco el cual cuando hago el require_once o include lo interpreta como codigo HTML (se envia un dato y por tanto la cabecera) y cuando luego hago la redireccion pues genera el error

Tags:

Post Relacionados

66 Comentarios. Dejar nuevo

Muchas Gracias, en mi caso tenia un salto de linea que no veía.

Responder

Muchas Gracias, genio!!!!

Responder

Eres un genio

Responder
Erickson Vásquez
13 julio, 2013 3:39 AM

Muy buen post, me funcionó perfectamente, gracias.

Responder

Epa … ya iva a suprimir lo que estava asiendo … Se agradese 😀

Responder

A mi me paso que en lapriimera linea en vez de esto “” estaba esto “”

al no cargar el “require_once” me daba el fallo, lo modifique y se soluciono…
les dejo ese detalle que me hizo dreamweaver trabajando con un servidor de pruebas.

Responder

Muy bueno. Yo tenia el mismo error, un espacio luego del cierre ‘?>’
Muchas gracias.

Responder

Hermano , me has salvado la vida, muchas gracias por la información (y), Buena energía

Responder

Xevere man ,me ayudastes de una buena. ya casi me doy.
Gracias.

Responder

Realmente buen dato, precisa la indicación… \m/

Responder

La verdad eso se soluciona con incluir las siguientes llamadas en el inicio y fin del código respectivamente, después de la etiqueta de inicio de php y antes de la de cierre de php:

ob_start();
ob_end_flush();

eso soluciona el problema y se evita estar mirando con microscopio el código…

Responder

me funciono el metodo de ob_start(); ob_end_flush(); ahora si podre continuar. 😉

Responder

Genial esa es la solucion

Responder

Gracias Me quedo como anillo al dedo por poco destruia mi blog por un pequeñito erro me ayudo bastante y mi blog sigue funcionando normal.

Responder

QUE ONDA AMIGOS ENCONTRE EL PROBLEMA… ESE ERROR APARECE POR UTILIZAR EL HEADER PUES LO PUEDEN SOLUCIONAR ACTIVANDO EL display=on en el servidor en directivas locales quitando el display=off o la manera mas sencillaa es no utilizar el header(location: ) , yo utilize un script se los paso :
echo (” location.href=’encuesta.php?id=1′”);

Responder

echo (“AbresSCRIPT location.href=’encuesta.php?id=1′ CierrasSCRIPT”);

Responder

Ayuda por favor!. este mensaje me sale solo en el aplicativo subido al website, pero en local no tengo ese problema. a que puede deberse? Les resumo: desde una pagina de login debe redirigirse al index. Me toca reescribir “index.php” luego que el logueo es exitoso.

Responder

Gracias!!! Era exactamente lo que me pasaba!

Responder
Gabriel Rodriguez
28 octubre, 2013 7:14 AM

Gracias bro me sirvió muchisimo

Responder

Una medida que uso es evitar cerrar el php (sin poner ?> ) y con eso evito ese tipo de sorpresitas. Saludos.

Responder

en mi caso había un salto de línea y tuve que cambiar la codificacion de utf-8 a ANSI por que como uso wordpress no funcionaba. gracias

Responder

hola amigos, podrian ayudarme, no encuentro ningun espacio (no lo veo) que programa puedo utilizar para comprobar que no haya otro error, la pagina andaba normalmente hace aproximadamente 10 dias, y desde ayer que no puedo ingresar, ni al wp-admin, ni al sitio, desde ya muchas gracias por cualquier dato que puedan brindarme

Responder
Davis Soriano Flores
22 marzo, 2014 7:51 PM

amigos ya borre todos los espacion antes y despues de la web pero siguio igual ya modifique a ansi la pagina pero me sigue saliendo el error..ayuda porfa..no estoy usando wordpress ni ningun otro sino un codigo que me paso un amigo de un blod propio

Responder
Jefferson Lipsky
28 marzo, 2014 3:32 PM

Hermano, te comento, que tal cual: un espacio al lado del berraco cierre de php.

Lo tenaz del tema es que en el wamp funcionaba perfectamente, pero al subirlo al servidor que es IIS no funcionaba.

Nuevamente muchas gracias!

Responder

Gracias amigo!!! tuve el mismo problema y con tu valiosa ayuda lo encontré!!!

Responder

Excelente post!
diría yo que todo programador PHP ha pasado o tendrá que pasar por esta incomoda situación.
Aunque para mi esta no fue la solución, me sirvió para guiarme y seguir en la busqueda, que como resultado encontré esto: http://blog.mandanwebs.com/wordpress/soluciones-para-el-error-warning-modify-header-information-headers/
y la segunda opcion de ese blog fue mi solucion.
(aclaro que no es mi blog y no estoy haciendo spam, sencillamente quiero compartir acá lo que a mi me sirvió)
-Saludos colegas.

Responder

Lo unico que me funciono fue reemplazar la hearder(Location: etc etc etc); por llamadas oportunas a la siguiente funcion:

function redirect($url,$seconds){
$ss = $seconds * 1000;
$comando = “window.setTimeout(‘window.location=”.chr(34).$url.chr(34).”;’,”.$ss.”);”;
echo ($comando);
}

Responder

Excelente me fue muy útil

Responder
Rocio Velázquez
28 mayo, 2014 4:04 PM

Gracias los amo!!! me funcionó el link de Jhon y la del salto de línea en el archivo funciones.php de mi tema con eso quedó perfecto 🙂

Responder
Jois Jiménez
3 junio, 2014 9:16 PM

¡Excelente! Mi error era una tabulación antes de <? …
Muchas gracias.

Responder

Encontré la solición a este problema que me tomó más de 15 horas seguidas poder resolver.
Se agradecen los post con las alternativas de solución pero nada de eso me resultó.
Finalmente logré identificar que el problema está en los archivos de idioma. La solución es copiar el archivo que está en Inglés, pegarlo en la carpeta de Español y editarlo completo desde el server (en mi caso uso FileZilla), sin bajarlo porque ahí se enreda todo.
Espero que les sirva!
CE.

Responder

Gracias y mil gracias. Me estaba volviendo loco.

Responder

Muchhas gracias!

Responder

buenas gracias lo de la funcion me funciono ahora lo usare en todo lo que haga ob_start();
ob_end_flush();

Responder

Increible!!!, Pero Cierto. Muchísimas Gracias!!!

Responder

Colegas me pasé 2 horas buscando el error y no lo encontraba, ya estaba por rendirme, inclusive estaba pensando en usar las funciones del colega: fahren, pero quise insistir porque estuvo funcionando bien hasta hacía unas horas y no podía ser otra cosa que yo mismo hubiera movido algo; así que dándole la última leída a mi archivo de conexión (yo uso Dreamweaver y este programa guarda este archivo en una carpeta: Connections )
POR FIN me di cuenta que antes de la etiqueta de apertura: <?PHP había un espacio y no lo había visto antes 🙁
Lo borré y quedó solucionado

estaba así:
<?php
……..
en lugar de estar así:
<?php
……..

Saludos

Responder

Bueno en mi comentario anterior parece que el sistema borró el espacio que yo había dejado como ejemplo antes de la etiqueta <?php
bueno pero ya se entiende, quise ser más ilustrativo.
Saludos.

Responder

hey bro muchas gracias por tu ayuda, ajaja ,e hubiera muerto buscando ese error

muchas gracias 😀

Responder

Buena man. nunca lo hubiera imaginado. salu2. Se agradece

Responder

Buen dato. Debe revisarse bien el codigo en los espacios en blanco y lineas en blanco en todo en codigo. Gracias

Responder
WordPress error. Warning: Cannot modify header information | Adr-Avatar
9 septiembre, 2014 1:00 PM
Responder

yo no tengo espacios luego del codigo y sigo teniendo ese error. No se qué será. Aun no esta interfiriendo en el funcionamiento del sitio web asi que supongo que no molestará, no?

Responder

Muchas gracias me sirvio

Responder

hermano mil gracias,estaba batallando en mi hosting y me acabas de salvar la vida

Responder

Guru… tenia el mismo problema pero en otro archivo. se agradece

Responder

sos un genio!!!!

Responder
Jorge Davalos
17 octubre, 2014 8:35 PM

I love you!! haha gracias!

Responder

mi error era que tenia un espacio antes de <?

Responder
Wilson Campos Campos
4 noviembre, 2014 8:48 PM

No se imaginan cuanto cambie, modifique, reescribí, reorganice por todo el programa, lo revise, dormía volvía a revisar etc..etc.. etc..Muchas Muchas Gracias……

Responder
Andres Benavides
4 noviembre, 2014 9:07 PM

En mi caso, tengo mucha programación, y al igual que varios de los comentarios que he leído, me aseguré de no tener espacios antes ni después de las aperturas y cierres del php.
La solución que encontré, por si a alguien le sirve, fue usar JavaScript en vez de php; a continuación el código:

$_SESSION[‘seccion’] = 1; //Propio de mi sistema
?>
Si su navegador no lo redirecciona, haga clic AQUI
window.location=”/index.php”;
<?php
} // continuación de mi sistema

Espero que a alguien le sirva la idea

Saludos

Responder

Se te agradece…
Muchisimas gracias!!!!

Responder
Tu nuevo esclavo
21 noviembre, 2014 8:13 AM

Gracias mmen, llevava dias con este fu****g error, desde hoy sere tu humilde esclavo :p

Responder

buenas a todos..
miren quisiera que me ayuden con este problema: tengo un sitio web que permite descargar archivos .zip desde una base de datos, lo que pasa es cuando doy clic en bajar el archivo(que está en la BD de un campo longblob) me abre el archivo en la misma pagina pero con basuras y lo que quiero es que me levante para descargar el archivo… lo intenté desde localhost y ahi si me funciona, pero cuando está en el sitio web ahi no me funciona y se me habre solo basura.. xfa sus ayudas es importante

Responder

ya, para eso debes poner la cabecera del tipo de archivo y forzar la descarga:
header(“Content-Transfer-Encoding: binary”);
header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=$file”);
header(“Content-Length: $size”);
de ahi ya lo imprimes en pantalla

Responder

Muchísimas gracias hermano, me estaba volviendo loco con eso. Ya le había rezado a todos los dioses del olimpo por respuestas. Te lo agradezco sinceramente.

Responder

Excelente, muchas gracias.

Responder

Excelente. Más de dos años después de que este post se escribiera, me ha sacado de un buen apuro durante un cambio de servidor. La página se mostraba bien, pero me salía el dichoso error cuando entraba al wp-admin.
Muchas gracias.

Responder

Hola en mi caso era el ultimo tema el que no me permitia ingresar al dashboard, primero me conecte por FTP y cambie a “define(‘WP_DEBUG’, true);” en el archivo wp-config.php, al recargar la pagina me aparecio un mensaje como:
Warning: Cannot modify header information – headers already sent by (output started at /home/xxx/public_html/wp-content/themes/spicy/functions/template-tags.php:41) in /home/xxx/public_html/wp-login.php on line 424

Aca pude notar que en la carpeta themes hace referencia a “spicy”, el ultimo tema activado, por lo que me dirigi hacia esa carpeta y la renombre como “spicy_temporal”, al recargar la pagina de login pude ingresar al dashboard..! (ojo: el archivo lo baje a mi pc, los modifico con notepad++, y si el server es linux deben utilizar “Editar/Conversión de fin de linea/formato UNIX”).

Responder

muchas gracias, genio! los espacios eran el problema, saludos!

Responder

Gracias colega, muy util.

Responder

Genial amigo, me has salvado, tenia un salto de linea

Responder

por mas que busque el error jamás lo encontré, lo que hice fue copiar y pegar el código en notepad y guardarlo con codificación ANSI y listo, me he topado con espacios en blanco anteriormente y eso también es un error, así que si todo tu código está bien, intenta lo de notepad. Saludos

Responder

me pasaba lo mismo, no encontraba el error y abri el wp-config.php con notepad, guarde con codigo ANSI y subir el archivo por FPT y ahroa funciona… Menos mal que ya estaba desesperado!

Responder

excelente aporte, el espacio era el problema, muchas gracias

Responder

Con las lineas de código se soluciona el error….

Muchas gracias

Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *