sesion pasar paginas entre cerrar array php session

pasar - session array php



Problemas con PHP 5.3 y carpeta de sesiones (4)

Recientemente actualicé a PHP 5.3 y desde entonces recibo mensajes de error (esporádicos) que indican que Apache (o puede ser el limpiador de los archivos de sesión) no tiene permisos para la carpeta donde se almacenan las sesiones.
Esto sucede de manera aleatoria y no se puede reproducir con pasos exactos, lo que me llevó a adivinar que es el limpiador de la sesión.
¿Alguien tiene alguna experiencia con tales errores?

El mensaje de error (que se activa en la línea session_start() ) es:

ps_files_cleanup_dir: opendir (/ var / lib / php5) falló: Permiso denegado.

ls -ltr en el directorio de la sesión da:

drwx-wx-wt 2 root root 4096 2010-05-25 12:39 php5

Dentro de este directorio, veo archivos de sesión propiedad de www-data, que es mi Apache, y la aplicación funciona bien. ¿Qué me hace preguntarme, bajo qué usuario se ejecuta la sesión GC?


Este parece ser un error típico en los servidores de Ubuntu (estoy usando Lucid LTS). Los permisos predeterminados del directorio / var / lib / php5 existen

drwx-wx-wt 2 root root 4096 2011-11-04 02:09 php5

Para que pueda ser escrito pero no leído por el servidor web, supongo que eso explica los errores.

Como Ubuntu tiene su propia limpieza de basura a través de cron ( /etc/cron.d/php5 ), probablemente es mejor deshabilitar la recolección de basura de php como se sugiere anteriormente por Diwant Vaidya.

session.gc_probability = 0

De hecho, hay una razón por la que la carpeta de la sesión no debería ser legible en todo el mundo, como dice el Manual de PHP :

Si deja este conjunto en un directorio legible para todo el mundo, como / tmp (el valor predeterminado), otros usuarios en el servidor pueden secuestrar sesiones al obtener la lista de archivos en ese directorio.


Este problema me ha estado molestando por un tiempo. Cambié el valor como se sugiere en php.ini y el problema siguió ocurriendo. Encontré el mismo valor de configuración en mi index.php y también privado / Zend / session.php. Así que vale la pena mirar un poco más a fondo si el problema sigue ocurriendo. Espero que esto sea de utilidad para alguien.


La solución que uso actualmente (que no estoy seguro de que sea la correcta) es otorgarle la propiedad de la carpeta de la sesión al usuario de Apache (www-data en mi caso).


La solución: En tu php.ini establece session.gc_probability en 0

La causa creo que encontré la respuesta aquí http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

Esencialmente, la recolección de basura está configurada para ser realizada por trabajos cron en algunos sistemas (es decir, Ubuntu / Debian). Algunos ejecutables de php ini como php-cli también intentan hacer una recolección de basura y eso da como resultado el error que se produjo.