PHP - Error al pasar proyecto de localhost a servidor remoto.

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Ramón (4 intervenciones) el 05/05/2019 18:27:16
Hola;

El proyecto que estoy desarrollando funciona perfectamente en localhost (xampp) pero cuando lo he subido a mi servidor remoto (1and1) no me funciona el redireccionamiento de algunas paginas internas de la web. El fallo se presenta cuando el redireccionamiento se solicita a través de un

1
header("location:index.php?action=accesoRestringido");

Después de buscar por la red y leer muchos post no he encontrado solución al problema. El otro día llamé al servicio técnico de 1and1 y tras realizar varias comprobaciones me dijeron que mi código estaba bien y que no veían ningún error por lo que debía de ser alguna directriz del php.ini que estuviera diferente en localhost y el servidor remoto.

Tras ejecutar el archivo phpinfo.php en ambos servidores he podido ver que la directiva output_buffering estaba desactivada en 1and1 (valor 0) y activada en localhost (con un valor de 4096). He creador un archivo php.ini con la directiva output_buffering activada

1
output_buffering: 4096

y lo he subido a la raíz de mi proyecto en 1and1.

Ahora me aparecen unos mensajes de error y sigue sin redireccionar las páginas pero no se si al solucionar los errores me redireccionará.

El mensaje de error que me muestra es:

Warning: session_start(): Cannot start session when headers already sent in /homepages/XXXXXX/htdocs/XXXX/views/modules/verificar.php on line 2

He leído que en algunos sitios aconsejaban poner al inicio de todo el código esta instrucción

1
2
3
<?php
ob_start();
?>

y al final del mismo cerrarla con esta otra

1
2
3
<?php
ob_end_flush();
?>

Pero no me ha funcionado.

Ha alguien se le ocurre alguna idea. Toda ayuda será bien recibida. Gracias,

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Joan
Val: 180
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Joan (21 intervenciones) el 05/05/2019 21:07:49
El warning: Warning: session_start(): Cannot start session when headers already sent in /homepages/XXXXXX/htdocs/XXXX/views/modules/verificar.php on line 2 es porque antes del session_start() estas enviando código a la web.

Pon el session_start() al inicio de todo del código, antes de cualquier otra linea de PHP o HTML

Puedes tener el mismo problema con el header("redirect:....")... revisa que no se haya enviado nada al navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Mauro (1038 intervenciones) el 06/05/2019 16:01:37
Las funciones ob_start y ob_end_flush se utilizan para administrar el buffer de salida.

Al usarlas lo que haces es evitar que lo que emite tu script (sea via echo, print, puro html, etc...) sea enviado en forma directa al cliente. En cambio, se almacena todo en memoria del servidor y, al vaciar el buffer (flush) se envía todo junto.

Por el tema del php.ini, desconozco cómo puedes usarlo en 1and1 aunque me suena raro que baste con dejarlo en tu directorio en su servidor... podrías intentar con ini_set (aquí puedes ver algo más de detalle).

Lo que yo intentaría primero es verificar los headers que emite el servidor en cada ambiente.

Para eso puedes usar cURL o bien la consola del navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Ramón (4 intervenciones) el 06/05/2019 17:35:32
Muchas gracias por vuestras aportaciones.

Voy a trabajar las indicaciones que me aportais a ver si puedo ir solucionando los problemas que se me presentan en el servidor remoto. Ya informaré de los progresoos y/o pediré ayuda nuevamente si lo necesito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Ramón (4 intervenciones) el 08/05/2019 00:44:38
Hola de nuevo;

He estado mirando si me salia algún mensaje de error a través de la consola del navegador al ejecutar la pagina web y he detectado que me sale este error:

1
2
3
Uncaugth TypeError: Cannot read property ‘innerHTML’ of null
	at validarRegistro (validarRegistro.js:95)
	at HTMLFormElement.onsubmit (registro:112)

En el archivo validarRegistro.js tengo varios apartados para la validación del registro a la web y, en concreto, la línea 95 de mi archivo corresponde a la línea 10 de este fragmento del archivo original:

1
2
3
4
5
6
7
8
9
10
11
12
13
/* VALIDAR PASSWORD */
	if(password != ""){
		var caracteres = password.length;
		var expresion = /^[a-zA-Z0-9]*$/;
		if(caracteres < 8){
			document.querySelector("label[for='passwordRegistro']").innerHTML += '<div class="alert alert-danger">Debe escribir una contraseña con un mínimo de 8 caracteres.</div>';
			return false;
		}
		if(!expresion.test(password)){
			document.querySelector("label[for='passwordRegistro']").innerHTML += '<div class="alert alert-danger">No se permiten caracteres especiales en la contraseña.</div>';
			return false;
		}
	}

En el archivo registro.php tengo declarado lo siguiente:

1
<form method="post" onsubmit="return validarRegistro()">

Yo no he sabido localizar el error al que hace referencia el mensaje.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Mauro (1038 intervenciones) el 08/05/2019 17:31:44
Bien! Al menos hemos encontrado la causa :)

Leyendo simplemente el error se ve que:

1
document.querySelector("label[for='passwordRegistro']")

No se encuentra... (Más info aquí)

Yo empezaría por verificar si existe efectivamente un elemento de tipo label cuyo atributo for sea passwordRegistro (Simplemente mira el HTML generado por tu página... ctrl-u y busca)... me imagino que la respuesta será que no (TIendo a creerle a la máquina :)).

En caso de que, efectivamente no exista, deberías verificar si en tu entorno local sí se genera tal elemento (o el error js es ignorado) y, de ser así tratar de ver qué puede estar pasando en el servidor que hace que no se genere.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al pasar proyecto de localhost a servidor remoto.

Publicado por Ramón (4 intervenciones) el 11/05/2019 00:31:08
Hola;

Al final he podido solucionar el problema y mi proyesto web funciona perfectamente en el servidor remoto.

La solución ha consistido en crear un archivo php.ini con la instrucción

1
output_buffering: on

Al final la solución sólo se diferencia de una de las opciones que ya había probado en que había puesto en el archivo php.ini la instrucción output_buffering dándole el valor 4096 cuando sólo tenia que poner on.

Lo explico por si le puede ser de utilidad a alguien que se encuentre con el mismo problema.

Nuevamente gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar