2010-04-25 15 views
24

Aquí está mi archivo. Quiero hacer que se redirija, pero no pasa nada. Para ver lo que está sucediendo, agregué un eco antes de la parte del encabezado.La redirección de ubicación del encabezado PHP no funciona, ¿por qué?

No arroja un error ni redirige a index.php. ¿Qué está mal? He activado/desactivado el almacenamiento en búfer de salida, pero nada lo hace redirigir. ¿Que puedo hacer?

<? 
error_reporting(E_ALL); 
echo 'This is an error'; 

header("Location: login.php"); 
die(); 
?> 

Gracias

+1

¿Está * display \ _errors * habilitado? – Gumbo

+0

@Gumbo - ¡Seguro! – Industrial

+3

¿El código que ha proporcionado al menos arroja 'Esto es un error'? – timdev

Respuesta

1

Me recordé que tenía XDebug instalado en el entorno de prueba real y tras Google, encontré este sitio: http://bugs.xdebug.org/view.php?id=532

Así que voy a descargar el La última versión de xDebug y cambió el php.ini en consecuencia para el nuevo archivo y todo funciona como un amuleto. Los encabezados se envían: la redirección se realiza y se muestran los errores.

¡Gracias a todos por su ayuda!

43

De PHP documentation:

header() debe ser llamado antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo, o desde PHP.

Y en su caso, está utilizando echo antes header()

+0

Lo sé y es por eso que hice un eco antes del encabezado() - call. Se comete un error en otros servidores y debería hacer esto. ¿Por qué no pasa nada? – Industrial

+7

Una alternativa para cambiar los encabezados sería usar: ' window.location.replace ('login.php') "?>' –

1

¿Se ha habilitado las etiquetas cortas? intentarlo con la etiqueta de larga <?php:

<?php 
error_reporting(E_ALL); 
header("Location: login.php"); 
die(); 
?> 
+0

Sí, tengo etiquetas cortas habilitadas y todo lo demás funciona bien, excepto las cosas del encabezado ... – Industrial

0

¿Está habilitado el display_errors?
@Gumbo - ¡Seguro!

bien, seguro que no lo es. porque

Para ver lo que está pasando, agregué un eco antes de la parte del encabezado.

si tuviera display_errors habilitado, se mostraría un error, al menos cuando turned output buffering on.

Primero, asegúrese de poder ver los mensajes de error.
acaba de imprimir una variable no definida,

error_reporting(E_ALL); 
echo $undef9306; 

Estoy seguro de que no lo verá. Por lo tanto, debe activar la visualización de errores en

A continuación, en el lado del servidor, puede usar la función headers_sent() para ver si se enviaron los encabezados. En el lado del cliente use sniffer HTTP para ver si se envió algo

Y verifique su archivo para la lista de materiales.

+0

Hola. Me temo que no. Display_errors está habilitado como se dijo, pero fue el xDebug que causó esto ... Muchas gracias por su ayuda Col.! – Industrial

Cuestiones relacionadas