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
NombrePor defectoCambiableHistorial de cambios
session.save_path""INI_ALL 
session.name"PHPSESSID"INI_ALL 
session.save_handler"files"INI_ALL 
session.auto_start"0"INI_PERDIR 
session.gc_probability"1"INI_ALL 
session.gc_divisor"100"INI_ALL 
session.gc_maxlifetime"1440"INI_ALL 
session.serialize_handler"php"INI_ALL 
session.cookie_lifetime"0"INI_ALL 
session.cookie_path"/"INI_ALL 
session.cookie_domain""INI_ALL 
session.cookie_secure""INI_ALL 
session.cookie_httponly""INI_ALL 
session.cookie_samesite""INI_ALLDisponible desde PHP 7.3.0.
session.use_strict_mode"0"INI_ALL 
session.use_cookies"1"INI_ALL 
session.use_only_cookies"1"INI_ALL 
session.referer_check""INI_ALL 
session.cache_limiter"nocache"INI_ALL 
session.cache_expire"180"INI_ALL 
session.use_trans_sid"0"INI_ALL 
session.trans_sid_tags"a=href,area=href,frame=src,form="INI_ALLDisponible desde PHP 7.1.0.
session.trans_sid_hosts$_SERVER['HTTP_HOST']INI_ALLDisponible desde PHP 7.1.0.
session.sid_length"32"INI_ALLDisponible desde PHP 7.1.0.
session.sid_bits_per_character"5"INI_ALLDisponible desde PHP 7.1.0.
session.upload_progress.enabled"1"INI_PERDIR 
session.upload_progress.cleanup"1"INI_PERDIR 
session.upload_progress.prefix"upload_progress_"INI_PERDIR 
session.upload_progress.name"PHP_SESSION_UPLOAD_PROGRESS"INI_PERDIR 
session.upload_progress.freq"1%"INI_PERDIR 
session.upload_progress.min_freq"1"INI_PERDIR 
session.lazy_write"1"INI_ALL 
session.hash_function"0"INI_ALLEliminado en PHP 7.1.0
session.hash_bits_per_character"4"INI_ALLEliminado en PHP 7.1.0
session.entropy_file""INI_ALLEliminado en PHP 7.1.0.
session.entropy_length"0"INI_ALLEliminado en PHP 7.1.0.
Para más detalles y definiciones de los modos de 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_handlerstring
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_pathstring
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.

session.namestring
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_startbool
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_handlerstring
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 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_probabilityinteger
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_divisorinteger
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_maxlifetimeinteger
session.gc_maxlifetime especifica el número de segundos después de lo cual 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_checkstring
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_filestring
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. 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. session.entropy_file usa de forma predeterminada /dev/urandom o /dev/arandom si están disponibles.

session.entropy_lengthinteger
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_modebool
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.

Advertencia

Si una sesión personalizada es registrada a través de la función session_set_save_handler() y esta no implementa SessionUpdateTimestampHandlerInterface::validateId(), ni proporciona el callback validate_sid respectivamente, el modo strict session ID es deshabilitado, independientemente del valor de esta directiva. Observe que SessionHandlernoSessionHandler::validateId().

session.use_cookiesbool
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_cookiesbool
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. Por defecto es 1 (habilitado).
session.cookie_lifetimeinteger
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_pathstring
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_domainstring
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_securebool
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_httponlybool
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.cookie_samesitestring
Permite a los servidores afirmar que no se debe enviar una cookie junto con las solicitudes entre sitios. Esta afirmación permite a los user agents mitigar el riesgo de fuga de información, y proporciona cierta protección contra ataques de falsificación de solicitudes entre sitios. Tenga en cuenta que esto no es compatible con todos los navegadores. Un valor vacío significa que no se establecerá ningún atributo de cookie SameSite. Lax y Strict significan que la cookie no se enviará entre dominios para solicitudes POST; Lax enviará la cookie para solicitudes GET entre dominios, mientras que Strict no lo hará.
session.cache_limiterstring
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_expireinteger
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_sidbool
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_tagsstring
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_hostsstring
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.sid_lengthint
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_characterinteger
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_functionmixed
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).

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: Eliminado en PHP 7.1.0.

session.hash_bits_per_characterinteger
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: Eliminado en PHP 7.1.0

session.upload_progress.enabledbool
Habilita el seguimiento del progreso de subida de ficheros, rellenado la variable $_SESSION. Por omisión su valor es 1, habilitado.
session.upload_progress.cleanupbool
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.prefixstring
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.namestring
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.freqmixed
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-freqinteger
El retraso mínimo entre actualizaciones, en segundos. Por omisión su valor es "1" (un segundo).
session.lazy_writebool
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 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.

To Top