note 108874 deleted from function.session-save-path by thiago

From: Date: Thu, 31 May 2012 15:28:03 +0000
Subject: note 108874 deleted from function.session-save-path by thiago
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-188326@lists.php.net to get a copy of this message
Note Submitter: Fernando Mosquera - MundialSYS.com ---- Error: Warning: session_write_close() [function.session-write-close]: write failed: No space left on device (28) Warning: session_write_close() [function.session-write-close]: Failed to write session data (files). Solución: Este problema puede estar dado por falta de espacio en la ubicación donde PHP guarda por defecto las session's de usuario (/tmp) Una solución para servidores compartidos (donde no podemos configurar el tamaño de estas ubicación) es cambiar la ubicación hacia una con espacio. 1) Creamos el directorio /public_html/sessions y le damos permisos (777) <-- será la nueva ubicación de nuestras session's (por un tema de seguridad podemos ver de afinar los permisos y ponerle un nombre más criptico). 2) Creamos un archivo .htaccess dentro de /public_html/sessions con el siguiente contenido (para restringir el acceso a este directorio) order deny,allow deny from all allow from 127.0.0.1 3) Cambiamos la configuración de la directiva "session.save_path" agregando la siguiente linea en nuestro controlador frontal (antes de ejecutar el session_start()), si no tenemos controlador frontal, dentro de algún archivo que incluyamos en cada script. session_save_path(dirname($_SERVER['DOCUMENT_ROOT']) . '/public_html/sessions'); 4) Debemos chequear que la directiva "session.gc_probability" este en 1 (activa), si no esta en 1 podemos configurar agregando la siguiente linea después de setear el session_save_path: ini_set('session.gc_probability', 1); Comprobar que realmente se haga el cambio: Podemos crear un archivo llamado checkconfig.php con el siguiente contenido: <?php session_save_path(dirname($_SERVER['DOCUMENT_ROOT']) . '/public_html/session'); ini_set('session.gc_probability', 1); session_start(); $_SESSION['text'] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu nunc quis tellus adipiscing facilisis ut eget turpis."; phpinfo(); ?> Ejecutarlo y chequear con un Ctrl + F (buscando) que las directivas session.save_path y session.gc_probability tengan los valores esperados, y que dentro del directorio /public_html/sessions se haya creado el archivo de session. Saludos, Fernando.

« previous php.notes (#188326) next »