2010-10-23 13 views
7

He copiado un sitio existente y que se ejecuta correctamente en un nuevo servidor de desarrollo.No se puede cambiar el nombre de la cookie de sesión php

El inicio de sesión en el nuevo servidor se ha roto, y yo lo rastreó al hecho de que a pesar de la cookie de sesión se cambia el nombre ...

ini_set('session.name', 'DOMAIN1'); 

... el navegador sigue almacenando la cookie como sesssion PHPSESSID.

Cuando elimino la línea anterior de la aplicación en el nuevo servidor, el inicio de sesión vuelve a funcionar. Pero esta no es una buena solución, porque otra aplicación también usa PHPSESSID con este nombre.

Y preferiría encontrar el motivo del comportamiento extraño en lugar de utilizar una solución alternativa. Si no lo arreglo, podría morderme en otro lugar.

Quizás esto ya es suficiente información para que alguien me dé una pista. Si no, ¿qué información sería útil?

Esta máquina era un servidor ubuntu 8.04 muy básico y desnudo, y instalé apache2, mysql y php5 con aptitude. También actualicé lokales y la zona horaria.

Solución:

que reemplazó a la línea anterior con el código de de la respuesta aceptada ...

if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1')) 
{ 
    die('Unable to set sesssion scope'); 
} 

... y el inicio de sesión ahora trabaja en el nuevo servidor.

Respuesta

8

A veces ini_set juega y no puede establecer los valores de ini correctamente, puede deberse a los permisos.

A continuación, no se resuelve completamente el problema con ini_set, y si alguien sabe la (s) razón (es) por las que ini_set no funciona en algún tipo de host, ¡por favor comparta!

Pruebe lo siguiente:

<? 
if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1')) 
{ 
    die('Unable to set sesssion scope'); 
} 

phpinfo(); 
?> 

, alternativamente, usted puede utilizar session_name() para configurarlo, y los malos siempre aconsejo que no funciona igual ejecuta y esperar que el Compruebe siempre el de una sentencia if y prepararse para lo peor escenario de caso, eso es cuando su aplicación se vuelve confiable y menos error_prone.

+2

No, se supone que ini_set() no debe modificar el archivo INI: ver http://php.net/ini_set De lo contrario, sería una gran violación de seguridad potencial. – mojuba

+0

Sí, lo siento, tiempo de ejecución solamente :) – RobertPitt

+0

Gracias, después de horas de búsqueda, finalmente funciona. Reemplacé el código heredado con las 4 líneas de su ejemplo y eso lo solucionó. – mit

Cuestiones relacionadas