Foros del Web » Programando para Internet » PHP »

SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Estas en el tema de SID, propagacion de sesiones. Mis servers son anarquistas o algo :S en el foro de PHP en Foros del Web. Hola a todos No sé si este es el sitio correcto para postear esto ya que, a pesar de ser un tema de propagación de ...
  #1 (permalink)  
Antiguo 28/05/2008, 05:38
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Hola a todos

No sé si este es el sitio correcto para postear esto ya que, a pesar de ser un tema de propagación de sesiones en PHP, creo que la culpa del problema es de apache, o del módulo de php para apache. En todo caso, llevo 2 días buscando el motivo, leyendo docs, y mirando en google y ya estoy algo desesperado, así que me he decidido a postear el problema. Perdón si el post es muy largo.

Estoy trabajando con 3 servidores, uno local y 2 dedicados que están por alemania comiendo kartofeln. En 2 de los 3 tengo el mismo problema.

Los servidores son estos:

1 - Gentoo con kernel 2.6.23-gentoo-r8
- Apache 2.2.8
- mod_suphp 0.6.2-r3
- PHP 5.2.5-r1

2.-Debian Etch kernel 2.6.22.9
-Apache 2.2.3-4+etch1
-libapache2-mod-php5 5.2.0-8+etch11
-PHP 5.2.0-8+etch11

3.- Debian Etch kernel 2.6.8-2-686-smp
- Apache 1.3
-PHP Version 4.4.4-8+etch4
-libapache-mod-php4 4.4.4-8+etch4



Bien, el caso es que el servidor "3" va perfectamente. Pero en los dos primeros, si en cualquier página pongo:

<?php session_start(); echo SID; ?>

-no me imprime absolutamente NADA. Sí imprime, en cambio, session_name() y session_id()
-Si hago en una shell un script prueba.php con el contenido <?php session_start(); echo SID; ?> y lo ejecuto en una shell (php ./prueba.php), por consola SI que me devuelve el PHPSESSID=xxxxxxx perfectamente.
-Ayer estaba haciendo unas cosillas con AJAX, y al encontrarme este problema intenté a ver si iba pasando la sesión por el url (session_name() . "=" . session_id()), pero el php que llamo con el script ignora la sesión completamente.

En el servidor "2" (el local) he probado a usar apache1.3, apache2, php4 y php5, todos con el mismo resultado.


He probado en el php.ini poner el trans_sid a 1, y con el use_cookies tanto en 0 como en 1, el resultado es el mismo.

Fuera de la impresión por pantalla del sid (y de su propagación, también tuve problemas cuando usaba un iframe en una de las páginas del sitio), las sesiones funcionan perfectamente. De hecho, de no haber estado probando esto del AJAX igual aún no me habría dado cuenta, pero claro, ahora necesito hacer algunas cosas en las que tendré que propagar el sid y me rompe bastante el hecho de que me ignore.

Alguien sabe a qué puede ser debido el problema. Agradecería cualquier idea, ya no sé donde más mirar.

Un saludo y muchísimas gracias.
  #2 (permalink)  
Antiguo 28/05/2008, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Hola HalHk,

Es muy raro que SI te funcione en el tercer servidor ya que SID no es una constante predefinida por PHP.

Si te es necesario usar SID puedes hacer algo así:
Código PHP:
session_start();
define"SID"session_id() ); 
Saludos.
  #3 (permalink)  
Antiguo 28/05/2008, 10:03
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Hola de nuevo y muchas gracias por contestar.

No es por llevar la contraria, pero SID sí es una constante de php.

según http://es.php.net/manual/es/function.session-id.php :

" session_id() devuelve el session id de la sesión actual. Si se especifica un id , reemplazará el session id actual.

También se puede utilizar la constante SID para recuperar el nombre y el session id de la sesión actual como una cadena adecuada para añadir a las URLs. "

SID, según lo que he leído, sería el equivalente a session_name() . "=" . session_id()"



Además, y como he comentado, en los tres servidores, haciendo el script y ejecutándolo por consola, el echo SID devuelve el PHPSESSID=xxxxxxxxx . Es en la web en donde no funciona.


Yo supongo que el problema debe andar en el módulo de apache, pero no tengo ni idea ya de donde más buscar.

Gracias de todas formas por la respuesta, y lo dicho, si a alguien se le ocurre cualquier cosa, lo que sea, agradecería que lo comentara.


Saludos
  #4 (permalink)  
Antiguo 28/05/2008, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Mmmm muy cierto, aunque no viene en la lista de constantes predefinidas.

Lo que puedes hacer es comparar usando el php.ini:
Código PHP:
<?php
phpinfo
();
?>
En tus servers y compara la parte de sesiones entre los 3.

Saludos.
  #5 (permalink)  
Antiguo 28/05/2008, 10:20
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Gracias de nuevo por contestar tan rapido ;)

Ya había mirado los phpinfo() de los servidores, aunque de todas formas les he vuelto a echar un ojo por si acaso. Están iguales (de hecho en el etch que no funciona llegué a copiar el php.ini del que sí, dado que tenían lo mismo).

Lo que me fastidia es que en modo consola si funcione. Si fallara solo el gentoo pensaría que puede ser culpa del suphp, pero es que el otro debian tiene LO MISMO que el que funciona. Es de locos.

No se, a nadie le ha pasdado nunca nada asi?

Saludos
  #6 (permalink)  
Antiguo 28/05/2008, 11:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Mmm ciertamente es un error muy extraño.

¿Como es que realizaste la instalación de PHP?, ¿desde los repos, o compilado manualmente?.

Saludos.
  #7 (permalink)  
Antiguo 28/05/2008, 11:23
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Desde los repositorios/portage. Con apt y emerge respectivamente vamos.
  #8 (permalink)  
Antiguo 28/05/2008, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Mmmm puede ser diferencias en la configuración, ¿haz checado en el manual de PHP (en las opciones de configuración) si es posible alterar que se auto-genere el SID a la hora de compilar?

Saludos.
  #9 (permalink)  
Antiguo 29/05/2008, 03:25
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Si es que el SID se genera. Es decir, las sesiones van, y si ejecuto un script por consola si que me devuelve el valor de SID como session_name() . "=" . session_id() . Sólo falla con el apache, a la hora de imprimir la constante (eso en si tampoco seria un gran problema), y a la hora de propagarlo que ignora todos mis intentos (que ahí sí me duele).

He copiado incluso el php.ini del que funciona al otro debian, así que están iguales, pero nada :(
  #10 (permalink)  
Antiguo 29/05/2008, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: SID, propagacion de sesiones. Mis servers son anarquistas o algo :S

Mmm es muy raro tu caso, igual te recomendaría reportarlo en la pagina de bugs de PHP: http://bugs.php.net/

Saludos.
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 20:56.