note 108874 added to function.session-save-path
| From: | FernandoMosquera-MundialSYS.com | Date: | Thu, 31 May 2012 13:51:33 +0000 |
| Subject: | note 108874 added to function.session-save-path | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-188322@lists.php.net to get a copy of this message | ||
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.
----
Server IP: 69.147.83.197
Probable Submitter: 190.245.47.11
----
Manual Page -- http://www.php.net/manual/en/function.session-save-path.php
Edit -- https://master.php.net/note/edit/108874
Del: integrated -- https://master.php.net/note/delete/108874/integrated
Del: useless -- https://master.php.net/note/delete/108874/useless
Del: bad code -- https://master.php.net/note/delete/108874/bad+code
Del: spam -- https://master.php.net/note/delete/108874/spam
Del: non-english -- https://master.php.net/note/delete/108874/non-english
Del: in docs -- https://master.php.net/note/delete/108874/in+docs
Del: other reasons-- https://master.php.net/note/delete/108874
Reject -- https://master.php.net/note/reject/108874
Search -- https://master.php.net/manage/user-notes.php