Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de configuración de sesión
Nombre Por defecto Cambiable Historial de cambios
session.save_path "" PHP_INI_ALL  
session.name "PHPSESSID" PHP_INI_ALL  
session.save_handler "files" PHP_INI_ALL  
session.auto_start "0" PHP_INI_PERDIR  
session.gc_probability "1" PHP_INI_ALL  
session.gc_divisor "100" PHP_INI_ALL Disponible desde PHP 4.3.2.
session.gc_maxlifetime "1440" PHP_INI_ALL  
session.serialize_handler "php" PHP_INI_ALL  
session.cookie_lifetime "0" PHP_INI_ALL  
session.cookie_path "/" PHP_INI_ALL  
session.cookie_domain "" PHP_INI_ALL  
session.cookie_secure "" PHP_INI_ALL Disponible desde PHP 4.0.4.
session.cookie_httponly "" PHP_INI_ALL Disponible desde PHP 5.2.0.
session.use_strict_mode "0" PHP_INI_ALL Disponible desde PHP 5.5.2.
session.use_cookies "1" PHP_INI_ALL  
session.use_only_cookies "1" PHP_INI_ALL Disponible desde PHP 4.3.0.
session.referer_check "" PHP_INI_ALL  
session.cache_limiter "nocache" PHP_INI_ALL  
session.cache_expire "180" PHP_INI_ALL  
session.use_trans_sid "0" PHP_INI_ALL PHP_INI_ALL en PHP <= 4.2.3. PHP_INI_PERDIR en PHP < 5. Disponible desde PHP 4.0.3.
session.trans_sid_tags "a=href,area=href,frame=src,form=" PHP_INI_ALL Disponible desde PHP 7.1.0.
session.trans_sid_hosts $_SERVER['HTTP_HOST'] PHP_INI_ALL Disponible desde PHP 7.1.0.
session.sid_length "32" PHP_INI_ALL Disponible desde PHP 7.1.0.
session.sid_bits_per_character "5" PHP_INI_ALL Disponible desde PHP 7.1.0.
session.upload_progress.enabled "1" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.upload_progress.cleanup "1" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.upload_progress.prefix "upload_progress_" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.upload_progress.name "PHP_SESSION_UPLOAD_PROGRESS" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.upload_progress.freq "1%" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.upload_progress.min_freq "1" PHP_INI_PERDIR Disponible desde PHP 5.4.0.
session.lazy_write "1" PHP_INI_ALL Disponible desde PHP 7.0.0.
url_rewriter.tags "a=href,area=href,frame=src,form=,fieldset=" PHP_INI_ALL Disponible desde PHP 4.0.4. Desde PHP 7.1.0 este INI ya no se utiliza en sesiones.
session.hash_function "0" PHP_INI_ALL Disponible desde PHP 5.0.0. Eliminado en PHP 7.1.0
session.hash_bits_per_character "4" PHP_INI_ALL Disponible desde PHP 5.0.0. Eliminado en PHP 7.1.0
session.entropy_file "" PHP_INI_ALL Eliminado en PHP 7.1.0.
session.entropy_length "0" PHP_INI_ALL Eliminado en PHP 7.1.0.
session.bug_compat_42 "1" PHP_INI_ALL Disponible desde PHP 4.3.0. Eliminado en PHP 5.4.0.
session.bug_compat_warn "1" PHP_INI_ALL Disponible desde PHP 4.3.0. Eliminado en PHP 5.4.0.
Para más detalles y definiciones de los modos de PHP_INI_*, vea Dónde se puede realizar un ajuste de configuración.

El sistema de administración de sesiones admite varias opciones de configuración que se pueden colocar en el fichero php.ini. Se dará una visión general breve.

session.save_handler string
session.save_handler define el nombre del gestor que se usa para almacenar y recuperar información asociada con una sesión. Por defecto es files. Observe que las extensiones individuales pueden registrar sus propios gestores save_handler; los gestores registrados se pueden obtener a nivel de instalación consultando phpinfo(). Véase también session_set_save_handler().
session.save_path string
session.save_path define el argumento que es pasado al gestor de almacenamiento. Si se elige el gestor de archivos por defecto, éste es la ruta donde los archivos son creados. Véase también session_save_path().

Hay un argumento opcional N para esta directiva que determina el número de niveles de directorios por donde los archivos de sesión se desplegarán. Por ejemplo, establecerlo a '5;/tmp' puede terminar en crear un archivo de sesión y ubicación como /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . Para usar N se deben crear todos estos directorios antes de utilizarlo. Para realizar esto, existe un pequeño script tipo shell en ext/session que se llama mod_files.sh, con una versión de Windows llamada mod_files.bat. Observe también que si N se usa y es más grande que 0 no se llevará a cabo la recolección de basura automática, vea una copia de php.ini para más información. También, si usa N, asegúrese de encerrar session.save_path entre "comillas" ya que el separador (;) también se usa para comentarios en php.ini.

El módulo de almacenamiento de ficheros crea ficheros usando el modo 600 de forma predeterminada. Este valor se puede cambiar con el argumento opcional MODE: N;MODE;/path, donde MODE es la representación octal del modo. Establecer MODE no afecta al proceso umask.

Advertencia

Si se deja esta configuración para un directorio legilble por todo el mundo, tal como /tmp (por defecto), otros usuarios en el servidor pueden ser capaces de secuestrar sesiones obteniendo la lista de archivos de ese directorio.

Precaución

Al emplear el argumento opcional de nivel de directorio N, como está descrito arriba, observe que al utilizar un valor mayor que 1 o 2 no es apropiado para la mayoría de los sitios debido al gran número de directorios requeridos: por ejemplo, un valor de 3 implica que existen 64^3 directorios en el sistema de ficheros, lo que puede resultar en un gran despredicio de escpacio e inodos.

Utilice solamente N con un valor mayor que 2 si está absolutamente seguro de que el sitio es lo suficientemente grande para requerirlo.

Nota: Antes de PHP 4.3.6, los usuarios de Windows tenían que cambiar esta variable para usar las funciones de sesiones de PHP. Se debe especificar una ruta válida, p.ej.: c:/temp.

session.name string
session.name specifica el nombre de la sesión que se usa como nombre de cookie. Sólo debería contener caracteres alfanuméricos. Por defecto es PHPSESSID. Véase también session_name().
session.auto_start boolean
session.auto_start especifica si el módulo de sesión inicia una sesión automáticamente cuando arranque una petición. Por defecto es 0 (deshabilitado).
session.serialize_handler string
session.serialize_handler define el nombre del manejador que se usa para serializar/deserializar datos. El formato de serialización de PHP (nombre php_serialize), formatos de internos de PHP (nombre php y php_binary) y WDDX son admitidos (nombre wddx). WDDX solamente está disponible si PHP está compilado con soporte para WDDX. php_serialize está disponible desde PHP 5.5.4. php_serialize usa internamente una función pura de serialización/deserialización y no tiene las limitaciones que tienen php y php_binary. Los gestores de serialización más antiguos no pueden almacenar índices numéricos ni de string que contengan caracters especiales (| y !) en $_SESSION. Use php_serialize para evitar errores con índices numéricos o caracteres especiales al cierre del script. Lo predeterminado es php.
session.gc_probability integer
session.gc_probability se usa junto con session.gc_divisor para manejar la probabilidad de que la rutina de gc (garbage collection, recolección de basura) está iniciada. Por defecto es 1. Véase session.gc_divisor para más detalles.
session.gc_divisor integer
session.gc_divisor junto con session.gc_probability define la probabilidad de que el proceso de gc (garbage collection, recolección de basura) esté iniciado en cada inicialización de sesión. La probabilidad se calcula usando gc_probability/gc_divisor, p.ej. 1/100 significa que hay un 1% de probabilidad de que el proceso de GC se inicie en cada petición. session.gc_divisor por defecto es 100.
session.gc_maxlifetime integer
session.gc_maxlifetime especifica el número de segundos transcurridos después de que la información sea vista como 'basura' y potencialmente limpiada. La recolección de basura puede suceder durante el inicio de sesiones (dependiendo de session.gc_probability y session.gc_divisor).

Nota: Si diferentes scripts tienen diferentes valores de session.gc_maxlifetime pero comparten la misma ubicación para almacenar la información de sesión, la información del script con el mínimo valor será limpiada. En este caso use esta directiva junto con session.save_path.

session.referer_check string
session.referer_check contiene la subcadena para comprobar cada HTTP Referer. Si la Referencia fue enviada por el cliente y la subcadena no se encontró, el id de sesión embebido será marcado como no válido. Por defecto es una cadena vacía.
session.entropy_file string
session.entropy_file da una ruta a un recurso externo (archivo) que será usado como una fuente de entropía adicional en el proceso de creación del id de sesión. Ejemplos: /dev/random o /dev/urandom que están disponibles en la mayoría de sistemas Unix. Esta función está disponible en Windows desde PHP 5.3.3. Si se establece session.entropy_length a un valor que no sea cero hará que PHP use la Windows Random API como fuente entrópica.

Nota: Eliminado en PHP 7.1.0. A partir de PHP 5.4.0 session.entropy_file usa de forma predeterminada /dev/urandom o /dev/arandom si están disponibles. En PHP 5.3.0, esta directiva se deja vacía por omisión.

session.entropy_length integer
session.entropy_length especifica el número de bytes que serán leídos desde el archivo especificado arriba. Por defecto es 32. Eliminado en PHP 7.1.0.
session.use_strict_mode boolean
session.use_strict_mode especifica si el módulo usará el modo de id de sesión estricto. Si este modo está habilitado, el módulo no aceptará IDs de sesioines no inicializados. Si se envia desde el navegador un ID de sesión no inicializado, se envía un nuevo ID de sesión al navegador. Las aplicaciones están protegidas de la fijación de sesiones mediante la adopción de sesión con modo estricto. El valor predeterminado es 0 (deshabilitado).

Nota: Es obligatoria habilitar session.use_strict_mode por seguridad general de sesión. Todos los sitios están advertidos de esto. Véase el código de ejemplo de session_create_id() para más detalles.

session.use_cookies boolean
session.use_cookies especifica si el módulo usará cookies para almacenar el id de sesión en la parte del cliente. Por defecto es 1 (habilitado).
session.use_only_cookies boolean
session.use_only_cookies especifica si el módulo sólo usará cookies para almacenar el id de sesión en la parte del cliente. Habilitar este ajuste previene ataques que implican pasar el id de sesión en la URL. Este ajuste fue añadido en PHP 4.3.0. Por defecto es 1 (habilitado) desde PHP 5.3.0.
session.cookie_lifetime integer
session.cookie_lifetime especifica el tiempo de vida en segundos de la cookie que es enviada al navegador. El valor 0 significa "hasta que el navegador se cierre". Por defecto es 0. Véase también session_get_cookie_params() y session_set_cookie_params().

Nota: La marca de tiempo de caducidad se establece relativa a la hora del servidor, la cúal no es necesariamente la misma que la hora del navegador del cliente.

session.cookie_path string
session.cookie_path especifica la ruta a establecer en la cookie de sesión. Por defecto es /. Véase también session_get_cookie_params() y session_set_cookie_params().
session.cookie_domain string
session.cookie_domain especifica el dominio a establecer en la cookie de sesión. Por defecto es ninguno, significando el nombre de host del servidor que generó la cookie según la especificación de cookies. Véase también session_get_cookie_params() y session_set_cookie_params().
session.cookie_secure boolean
session.cookie_secure especifica si las cookies deberían enviarse sólo sobre conexiones seguras. Por defecto es off. Este ajuste fue añadido en PHP 4.0.4. Véase también session_get_cookie_params() y session_set_cookie_params().
session.cookie_httponly boolean
Marca la cookie como accesible sólo a través del protocolo HTTP. Esto siginifica que la cookie no será accesible por lenguajes de script, tales como JavaScript. Este ajuste puede ayudar de manera efectiva a reducir robos de indentidad a través de ataques (aunque no está soportado por todos los navegadores).
session.cache_limiter string
session.cache_limiter especifica el método de control de caché usado por páginas de sesión. Puede ser uno de los siguientes valores: nocache, private, private_no_expire, o public. Por defecto es nocache. Vea también la documentación de session_cache_limiter() para informarse sobre lo que significan estos valores.
session.cache_expire integer
session.cache_expire especifica el tiempo de vida en minutos para las páginas de sesión examinadas, esto no tiene efecto para el limitador nocache. Por defecto es 180. Véase también session_cache_expire().
session.use_trans_sid boolean
session.use_trans_sid si está habilitado sid transparente o no. Por defecto es 0 (deshabilitado).

Nota: La administración de sesiones basadas en URL tiene riesgos de seguridad adicionales comparada con la administración de sesiones basdas en cookies. Los usuarios pueden enviar una URL que contenga un ID de sesión activo a sus amigos mediante email o los usuarios pueden guardar una URL que contenga una ID de sesión en sus marcadores y acceder a su sitio siempre con el mismo ID de sesión, por ejemplo. Desde PHP 7.1.0, una ruta de URL completa, p.ej. https://php.net/, es manejada por la característa trans sid. Versiones anteriores de PHP manejaban únicamente rutas de URL relativas. Los 'hosts' objetivos de reescritura están definidos por session.trans_sid_hosts.

session.trans_sid_tags string
session.trans_sid_tags especifica cuáles etiquetas HTML son reescritas para incluir el ID de sesión cuando está habilitado el soporte para SID transparente. Las predeterminadas son a=href,area=href,frame=src,input=src,form= form es una etiqueta especial. <input hidden="id_sesión" name="nombre_sesión"> se añade como variable de formulario.

Nota: Antes de PHP 7.1.0, url_rewriter.tags se utilizaba para este propósito. Desde 7.1.0, fieldset ya no se considera una etiqueta especial.

session.trans_sid_hosts string
session.trans_sid_hosts especifica los hosts que se reescriben para incluir el ID de sesión cuando el soporte para SID transparente está habilitado. El predeterminado es $_SERVER['HTTP_HOST'] Se pueden especificar varios hosts mediante ",", y no se permiten espacios entre hosts. P.ej. php.net,wiki.php.net,bugs.php.net
session.bug_compat_42 boolean
Las versiones de PHP 4.2.3 y anteriores tienen una característica/error no documentada que permite inicializar una variable de sesión en el ámbito global, aunque register_globals esté deshabilitado. PHP 4.3.0 y posteriores le avisarán, si se usa esta característica, y si session.bug_compat_warn también está habilitado. Esta característica/error puede ser desactivada deshabilitando esta directiva.

Nota: Eliminado en PHP 5.4.0.

session.bug_compat_warn boolean
Las versiones de PHP 4.2.3 y anteriores tienen una característica/error no documentada que permite inicializar una variable de sesión en el ámbito global, aunque register_globals esté deshabilitado. PHP 4.3.0 y posteriores le avisarán, si se usa esta característica habilitando session.bug_compat_42 y session.bug_compat_warn.

Nota: Eliminado en PHP 5.4.0.

session.sid_length integer
session.sid_length permite especificar la longitud de la cadena del ID de sesión. Esta longitud puede estar entre 22 y 256. El valor predeterminado es 32. Si es necesaria compatibilidad se puede especificar 32, 40, etc. Los ID de sesión más largos son más difíciles de adivinar. Se recomienda al menos 32 caracteres.

Nota sobre la compatibilidad: Use 32 para session.hash_func=0 (MD5) y session.hash_bits_per_character=4, session.hash_func=1 (SHA1) y session.hash_bits_per_character=6. Use 26 para session.hash_func=0 (MD5) y session.hash_bits_per_character=5. Use 22 para session.hash_func=0 (MD5) y session.hash_bits_per_character=6. Se deben cofigurar valores INI para tener al menos 128 bits en ID de sesión. No olvide establecer el valor apropiado en session.sid_bits_per_character, de lo contrario se tendrá un ID de sesión más débil.

Nota: Este ajuste se introdujo en PHP 7.1.0.

session.sid_bits_per_character integer
session.sid_per_character permite especificar el número de bits en caracteres de ID de sesión codificados. Los valores posibles son '4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ","). El predeterminado es 4. Cuantos más bits, más fuerte es el ID de sesión. Se recomienda 5 para la mayoría de entornos.

Nota: Este ajuste se introdujo en PHP 7.1.0.

session.hash_function mixed
session.hash_function permite especificar el algoritmo hash utilizado para generar los ID de sesión. '0' significa MD5 (128 bits) y '1' significa SHA-1 (160 bits).

Desde PHP 5.3.0 también es posible especificar cualquier algoritmo porporcionado por la extensión hash (si está disponible), como sha512 o whirlpool. Una lista completa de los algoritmos soportados se puede obtener con la función hash_algos().

Nota: Este ajuste fue introducido en PHP 5.

session.hash_bits_per_character integer
session.hash_bits_per_character permite definir cuántos bits son almacenados en cada carácter cuando se convierte la información hash binaria a algo legible. Los valores posibles son '4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ",").

Nota: Esto fue introducido en PHP 5. Eliminado en PHP 7.1.0

session.upload_progress.enabled boolean
Habilita el seguimiento del progreso de subida de ficheros, rellenado la variable $_SESSION. Por omisión su valor es 1, habilitado.
session.upload_progress.cleanup boolean
Limpieza de la información del progreso al finalizar la lectura de los datos del POST (p.ej. al finalizar la subida). Por omisión su valor es 1, habilitado.

Nota: Es muy recomendado mantener esta opción habilitada.

session.upload_progress.prefix string
Prefijo usado para la clave del progreso de subida en $_SESSION. Esta clave será concatenada con el valor de $_POST[ini_get("session.upload_progress.name")] para proporcionar un índice único. Por omisión su valor es "upload_progress_".
session.upload_progress.name string
El nombre de la clave a usar en $_SESSION para guardar la información del progreso de subida. Ver también session.upload_progress.prefix. Si no se pasa $_POST[ini_get("session.upload_progress.name")] o no está disponible, el progreso de subida no será grabado. Por omisión su valor es"PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq mixed
Determina cada cuanto debería actualizarse la información del proceso de subida. Este valor puede ser definido en bytes (p.ej. "actualiza la información del progreso de subida después de cada 100 bytes"), o en porcentajes (p.ej. "actualiza la información del proceso de subida después de recibir el 1% del total del tamaño del fichero"). Por omisión "1%".
session.upload_progress.min-freq integer
El retraso mínimo entre actualizaciones, en segundos. Por omisión su valor es "1" (un segundo).
session.lazy_write boolean
session.lazy_write, cuando está establecida a 1, significa que los datos de sesión solamente son rescritos si cambian. El valor predeterminado es 1, habilitado.

El ajuste de configuración register_globals influye en cómo las variables de sesión se almacenan y se restablecen.

El progreso de subida no será registrado a no ser que session.upload_progress.enabled esté habilitado, y la variable $_POST[ini_get("session.upload_progress.name")] esté definida. Ver Session Upload Progress para más información de como funciona.