Foros del Web » Programando para Internet » PHP »

Error de header al mandar una imagen para error 404

Estas en el tema de Error de header al mandar una imagen para error 404 en el foro de PHP en Foros del Web. Buenas tardes, Mi problema es que estoy intentando que cuando ocurra un error 404 al intentar abrir una imagen que no existe en el servidor, ...
  #1 (permalink)  
Antiguo 28/05/2013, 08:16
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 15 años
Puntos: 1
Pregunta Error de header al mandar una imagen para error 404

Buenas tardes,

Mi problema es que estoy intentando que cuando ocurra un error 404 al intentar abrir una imagen que no existe en el servidor, que se mande una imagen indicándolo. El script es el siguiente:

Código PHP:
if(strstr($_SERVER['REQUEST_URI'],"png") || strstr($_SERVER['REQUEST_URI'],"gif") || strstr($_SERVER['REQUEST_URI'],"jpg")){
header("Content-type: image/png"); /* AQUI ESTA EL ERROR */
$imagen=imagecreatefrompng("404errorImagen.png");
die(
imagepng($imagen));

La cuestión es que como Apache ya manda el error 404 de forma independiente, cuando intento ejecutar ese script salta el típico error de header y luego imprime la imagen, pero al no escribirme el header de image/png lo imprime como texto. Y el error, es el siguiente:

Código:
Warning: Cannot modify header information - headers already sent by (output started at /homepages/x/htdocs/error/404.php:1) in /homepages/x/htdocs/error/404.php on line 1
Entonces mi pregunta es ¿cómo puedo solucionar esto?
No me vale la respuesta de enviar la imagen como html con <img src=... porque metiendo html dentro de un <img> no va a salir nada.

Última edición por Dani_1270; 28/05/2013 a las 08:18 Razón: Puntualización
  #2 (permalink)  
Antiguo 28/05/2013, 08:22
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Error de header al mandar una imagen para error 404

No seria mejor que utilizaras las herramientas ya desarrolladas para este tipo de cosas ?

Cita:
Si queremos definir una página de error personalizada, que se muestre siempre que un usuario intente acceder a un recurso o página inexistente, para todo el sitio web, crearemos (o editaremos si ya existe) en la raíz del directorio web un fichero de nombre .htaccess e incluiremos la siguiente línea:

ErrorDocument 404: /error404.html
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 28/05/2013, 08:23
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Error de header al mandar una imagen para error 404

el error se debe a que tienes salidas de caracteres al stdout antes de llamar a header; debes verificar si no aplicas algún echo o print, y eliminar todo contenido antes del tag de inicio de php <?php, así como un DOCTYPE o codificar el archivo sin BOM
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 28/05/2013, 08:30
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 15 años
Puntos: 1
Respuesta: Error de header al mandar una imagen para error 404

Cita:
Iniciado por jotaincubus Ver Mensaje
No seria mejor que utilizaras las herramientas ya desarrolladas para este tipo de cosas ?
Y lo uso, el script del que te hablo salta porque en el .htaccess tengo la linea ErrorDocument 404 /error/404.php. Pero no consigo que me mande el header de Content-type para que ese documento se convierta en una imagen de aviso que HTML pueda interpretar al estar dentro de un <img>.

Cita:
Iniciado por maycolalvarez Ver Mensaje
el error se debe a que tienes salidas de caracteres al stdout antes de llamar a header; debes verificar si no aplicas algún echo o print, y eliminar todo contenido antes del tag de inicio de php <?php, así como un DOCTYPE o codificar el archivo sin BOM
Exactamente he comprobado que antes del script no hay nada, el archivo esta codificado sin BOM, y demás. Pero el error sigue saltando, y yo creo que es porque apache manda el header 404 y cierra, y no me deja enviar más headers. Por eso pregunto si alguien sabe como saltárselo.
  #5 (permalink)  
Antiguo 29/05/2013, 13:01
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 15 años
Puntos: 1
Respuesta: Error de header al mandar una imagen para error 404

¿Alguna solución?
  #6 (permalink)  
Antiguo 29/05/2013, 23:54
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 14 años, 5 meses
Puntos: 28
Respuesta: Error de header al mandar una imagen para error 404

tu hosting tiene que proveerte la personalisacion de dicho error.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #7 (permalink)  
Antiguo 01/06/2013, 13:03
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 15 años
Puntos: 1
Respuesta: Error de header al mandar una imagen para error 404

Cita:
Iniciado por arcanisgk122 Ver Mensaje
tu hosting tiene que proveerte la personalisacion de dicho error.
No, si el .htaccess de Apache ya da una solución para este error, redirigiendo a un archivo que le mandes cada vez que ocurra un error 404. Y esto me funciona.

El problema es que yo redirijo a un archivo "404.php". Y para personalizar el error, uso PHP, compruebo el tipo de archivo, y si es una imagen (jpg, png...) lo que quería hacer es como los hostings de imágenes, que mande una imagen indicando el error.

Pero cuando envío los headers para que esa página "404.php" se convierta en una imagen, da error. Y eso es lo que quería que me ayudaseis a solucionar.

Etiquetas: error404, headers, imagenes+php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:17.