Inicio de Sesion session_start() con IIS
Tengo IIS con PHP. Cuando intento ejecutar esto
<?php
session_start()
?>
El servidor me devuelve unas advertencias. En concreto son estas 3:
Warning: session_start() [function.session-start]: open(/tmp\sess_1b8ff86ae308a7c320f1760edab1d0fc, O_RDWR) failed: No such file or directory (2) in C:\ruta\login.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\ruta\login.php:2) in C:\ruta\login.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\ruta\login.php:2) in C:\ruta\login.php on line 2
---
He mirado la variable session.save_path y he visto que la tengo definida en /tmp.
Supongo que esta carpeta ha de encontrarse en el disco duro del servidor. De hecho he creado esta carpeta y la he dado atributos de lectura y escritura y ejecución de comandos. Es entonces cuando si que observo que la carpeta /tmp empieza a crear un archivo con el nombre de la sesion. Pero me sigue devolviendo los mensajes de advertencia.
Por favor, ¿alguien sabe a que se debe esto?
Gracias y un saludo
meddle
*parece* que hayas enviado algo a pantalla, por ejemplo usando echo. si ese es el caso, en PHP no puedes modificar cookies (las sesiones son un tipo especial de cookies) despues de enviar datos al header (lo que haces con echo, por ejemplo)
gandalias
mmmm
Pues creo que no... De hecho he probado a crear un archivo que solo contiene esto
<?php
session_start();
?>
y sigue cantanto los 3 warnings...
Lo curioso es que si que veo que me va creando el archivo en la carpeta /tmp...
Toy un poco perdido :(
gandalias
Me tiene un poco mosca el tema de que
/tmp\sess_1b8ff86ae308a7c320f1760edab1d0fc
¿no habra algun tema com las barritas / \...? no se... no se me ocurre nada...
meddle
ya veo, pues tio, ni puta idea, de veras, lo siento.
busca en php.net a ver que te dice, a veces comentan las funciones y ponen cosas de windows, pero es que trabajar PHP bajo IIS es como un poco rollo, siempre te salen pijadas. o dale al google a ver...
gandalias
Bueno... buscaré por ahí a ver que encuentro.
Muchas gracias!!!
hartum
nopongas absolutamente nada antes del start, pero cuando digo nada es nada de nada, ni un salto de linea ni un espacio en blanco, nina de na, de na.
Yo una vez me volvi loco hasta que lo averigue. Y sino, ya sabes "sigue buscando"
gandalias
Solucionado
En la variable session.save_path habia que poner la ruta completa (incluida la unidad)... Además hay que dar persimos de escritura en el directorio.
Gracias a todos!!!
gandalias
Ahora el problema es otro...
Resulta que tengo 2 paginas
sesion1.php
<?php
session_start();
$user="pepito";
$_SESSION['user']=$user;
?>
<html>
<body>
Sesion Iniciada con exito
<br />
<?php
echo $user;
?>
<br />
<a href="sesion2.php">Siguiente</a>
</body>
</html>
sesion2.php
<?php
session_start();
?>
<html>
<body>
<?php
if (isset($_SESSION['user'])) {
echo "Declarada";
echo $_SESSION['user'];
} else {
echo "User NO Declarada";
}
session_destroy();
?>
</body>
</html>
Cuando cargo la primera página me registra la sesion en un archivo en la carpeta donde apunta session.save_path e introduce en el archivo el contenido de la variable de sesion. Hasta aqui creo que es todo correcto.
A la hora de cargar la segunda página (sesion2.php) ME CREA OTRO ARCHIVO DE SESION DIFERENTE, por lo que me canta todo el rato como que NO esta declarada la variable $_SESSION['user']... Al hacer session_destroy() me elimina la sesion segunda, como era de esperar.
¿sabeis por que puede estar generandome 2 sesiones distintas? ¿No se supone que session_start() genera una nueva si no hay ninguna activa?
Heeeeelp!!!!
meddle
prueba sin poner session_start(); en sesion2
gandalias
No... Asi tampoco.
Por cierto... register_globlals esta activado (por la referencia del $_SESSION['user']) asi que no creo que sea problema de referencias). Y version de PHP 4.3.1
:(
gandalias
Apuf... en Apache bajo Linux rula bien... pero en IIS con Win2000 no xuta... configurado como ISAPI (y no como CGI) que lei algo de que podria influir... pero na...
¡que desastre!
seguimos investigando...
gandalias
Por fin!!!
Joer... Comparando el php.ini de casa (que si que funcionaba) con el del trabajo (que no funcionaba).. Habia algunas variables diferentes.
Salu!!!