2011-12-04 15 views
5

Estoy ejecutando un sitio web con un servidor nginx con PHP Fastcgi en un VPS. Traté de configurar el php.ini (en/etc/php5/cgi) para que la sesión de PHP dure más de 3 días (259200 segundos), pero no funcionó y mis sesiones de PHP no duran más de una hora.Las sesiones de PHP caducan demasiado pronto

Mi configuración actual sesión en el php.ini:

session.use_cookies = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 259200 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 259200 
session.bug_compat_42 = Off 
session.bug_compat_warn = Off 
session.referer_check = 
session.entropy_length = 0 
session.cache_limiter = nocache 
session.cache_expire = 259200 
session.use_trans_sid = 0 
session.hash_function = 0 

Lo que puede ser el problema aquí?

+1

¿Estás seguro de que ese es el archivo php.ini que se está cargando en PHP? ¿Ha intentado verificar dos veces la ruta del "Archivo de configuración cargada" en 'phpinfo()' para asegurarse? – animuson

+0

Intenta usar 'var_dump (ini_get ('session.cookie_lifetime'));' en un archivo PHP a través de todas las configuraciones aplicables en los valores ini de PHP para asegurarte de que no se anulan en otro lugar. – Treffynnon

+0

@animuson: Sí, está siendo cargado. Archivo de configuración (php.ini) Ruta \t/etc/php5/cgi Archivo de configuración cargada \t /etc/php5/cgi/php.ini Escanee este directorio para obtener archivos .ini adicionales \t /etc/php5/cgi/conf.d Archivos .ini adicionales analizados \t /etc/php5/cgi/conf.d/curl.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mysql. ini, /etc/php5/cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini – NeDark

Respuesta

10

Esto suena un poco como Ubuntu o Debian en el servidor. Si recuerdo correctamente, hay un cronjob en algún lugar (instalado ya sea por el paquete php5 o php5-common) que limpia el directorio de la sesión con más frecuencia.

Te recomiendo que configures tus sesiones para que se guarden en otro lugar (que el predeterminado). Ajuste session.save_path y verifique que cronjob no lo vacíe.

El cronjob está en algún lugar como /etc/cron.d/php - para estar seguro, ejecute dpkg -L php5 o dpkg -L php5-common. Suponiendo que está en Ubuntu (o Debian) esto debería mostrarle la ubicación de todos los archivos instalados.

+0

Finalmente resolví el problema al [almacenar sesiones con memcached] (http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/). Sin embargo, su solución parece ser válida, así que aceptaré su respuesta. Gracias. – NeDark

4

para ayudarle a depurar, se puede comprobar la configuración actual de que el trabajo de PHP cron está "viendo" mediante la ejecución:

/usr/lib/php5/maxlifetime

El guión maxlifetime busca en todas sus php Archivos .ini para la session.gc_maxlifetime y utiliza el valor más grande. El valor impreso está en minutos.

+0

Supongo que este es el script en ubuntu 15.10:/usr/lib/php5/sessionclean – talsibony

Cuestiones relacionadas