array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'session.configuration.php', 1 => 'Configurações em Execução', ), 'up' => array ( 0 => 'session.setup.php', 1 => 'Instalação/Configuração', ), 'prev' => array ( 0 => 'session.installation.php', 1 => 'Instalação', ), 'next' => array ( 0 => 'session.resources.php', 1 => 'Tipos de Recurso', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/session/ini.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
O comportamento destas funções é afetado pelas configurações do php.ini.
Nome | Padrão | Modificável | Registro de Alterações |
---|---|---|---|
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 | "0" | INI_ALL |
Antes do PHP 7.2.0, o padrão era "" . |
session.cookie_httponly | "0" | INI_ALL |
Antes do PHP 7.2.0, o padrão era "" . |
session.cookie_samesite | "" | INI_ALL |
Disponível a partir do 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_ALL |
Disponível desde o PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
INI_ALL |
Disponível desde o PHP 7.1.0. |
session.sid_length | "32" | INI_ALL |
Disponível desde o PHP 7.1.0. |
session.sid_bits_per_character | "5" | INI_ALL |
Disponível desde o 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_ALL |
Removido no PHP 7.1.0. |
session.hash_bits_per_character | "4" | INI_ALL |
Removido no PHP 7.1.0. |
session.entropy_file | "" | INI_ALL |
Removido no PHP 7.1.0. |
session.entropy_length | "0" | INI_ALL |
Removido no PHP 7.1.0 |
O sistema de gerenciamento de sessões suporta várias opções de configurações que podem ser colocados no arquivo php.ini. A seguir um breve resumo.
session.save_handler
string
session.save_handler
define o nome do
manipulador que será utilizado para armazenar e recuperar dados
associados à sessão. Padrão para
files
. Note que extensões podem registrar seus
próprios save_handler
s; manipuladores registrados podem
ser obtidos ao se vefificar o
phpinfo(). Veja também
session_set_save_handler().
session.save_path
string
session.save_path
define o argumento que
é passado para o manipulador de gravação. Se você escolher o manipulador padrão (de
arquivos), este é o caminho onde os arquivos serão criados. Veja também
session_save_path().
Há um argumento opcional N
para esta diretiva que determina
o número de níveis de diretório que seus arquivos de sessão serão
espalhados. Por exemplo, definindo para '5;/tmp'
pode levar a criação de um arquivo de sessão e diretórios como
/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
. Para fazer uso do N
você deve criar todos estes
diretórios antes do uso. Um pequeno script shell existe em
ext/session para fazer isto, chamado
mod_files.sh, com uma versão para o Windows chamada
mod_files.bat. Também note que se N
é
usado e maior do que 0 então a limpeza de sessões não
será executada, veja uma cópia do php.ini para mais
informações. Também, se você usar N
, certifique-se de cercar
session.save_path
com
"aspas" porque o separador (;
) é
usado também para comentátios no php.ini.
O módulo de armazenamento em arquivo cria arquivos com permissões 600 por padrão.
Esse padrão pode ser alterado com o argumento opcional MODE
:
N;MODE;/path
onde MODE
é o valor octal
representando as permissões.
Configurar MODE
não afeta o umask do processo.
Se você deixar isto definido num diretório de leitura público, como /tmp (o padrão), outros usuários no servidor poderão raptar sessões pegando a lista de arquivos nesse diretório.
Ao utilizar o argumento opcional de nível de diretório N
,
como descrito acima, note que utilizar um valor maior que 1 ou 2 é
inapropriado na maioria dos sites por conta da geração de um grande número de diretórios
exigidos: por exemplo, um valor de 3 implica que existirão (2 ** session.sid_bits_per_character) ** 3
diretórios em disco, o que pode resultar numa quantidade enorme de espaço e
inodes desperdiçados.
Somente use N
maiores que 2 se você estiver absolutamente
certo que o seu site é grande o suficiente para exigí-lo.
session.name
string
session.name
especifica o nome da
sessão que é usada como o nome do cookie. Deve conter apenas
caracteres alfanuméricos. O padrão é PHPSESSID
.
Veja também session_name().
session.auto_start
bool
session.auto_start
especifica se o
módulo da sessão deve iniciar uma sessão automaticamente no início
da requisição. Padrão 0
(desabilitado).
session.serialize_handler
string
session.serialize_handler
define o nome do
manipulador utilizado para serializar/desserializar dados. São suportados o formato
serial do PHP (php_serialize
), o formato interno
do PHP (php
e
php_binary
) e WDDX
(wddx
). O WDDX somente está disponível se o PHP foi
compilado com suporte
WDDX. php_serialize
utiliza
as funções serialize/unserialize internamente e não tem
as limitações que php
e php_binary
tem. Serializadores antigos
não conseguem gravar índices numéricos ou índices string que contenham caracteres
especiais (|
e !
) no array
$_SESSION. Utilize php_serialize
para evitar erros de índices
numéricos ou índices com caracteres especiais no final do script. O padrão
é php
.
session.gc_probability
int
session.gc_probability
em conjunto com
session.gc_divisor
é usado para gerenciar a probabilidade
que o gc (coletor de lixo) seja iniciado.
O padrão é 1
. Veja session.gc_divisor para detalhes.
session.gc_divisor
int
session.gc_divisor
em conjunto com
session.gc_probability
define a probabilidade
que o processo do gc (coletor de lixo) seja iniciado na inicialização de
cada sessão.
A probabilidade é calculada usando gc_probability/gc_divisor,
ex. 1/100 indica que existe 1% de chance que o processo GC inicie
em cada requisição.
O padrão para session.gc_divisor
é 100
.
session.gc_maxlifetime
int
session.gc_maxlifetime
especifica o número
de segundos, que, depois de decorridos, os dados serão considerados como lixo ('garbage') e
eventualmente apagados. Isso pode ocorrer no início da sessão
(dependendo de session.gc_probability e
session.gc_divisor).
O padrão é 1440
(24 minutos).
Nota: Se scripts diferentes tem valores diferentes para
session.gc_maxlifetime
mas compartilham o mesmo lugar para guardar os dados da sessão então o script com o menor valor estará limpando os dados. Neste caso, use esta diretiva em conjunto com session.save_path.
session.referer_check
string
session.referer_check
contém a
substring que você quer checar contra cada HTTP Referer. Se o
Referer for enviado pelo cliente e a substring não foi
encontrada, a id de sessão embutida será marcada como inválida.
O padrão é uma string vazia.
session.entropy_file
string
session.entropy_file
informa o caminho para um
recurso externo (arquivo) que será usado como uma fonte
de entropia no processo de criação da id de sessão. Exemplos são
/dev/random
ou /dev/urandom
que estão disponíveis em muitos sistemas UNIX.
Este recurso é suportado no Windows. Configurando
session.entropy_length
para um valor diferente de zero
fará o PHP utilizar o Windows Random API como fonte de entropia.
Nota: Removido no PHP 7.1.0.
session.entropy_file
tem como padrão/dev/urandom
ou/dev/arandom
, se disponível.
session.entropy_length
int
session.entropy_length
especifica o número
de bytes que serão lidos do arquivo especificado
acima. Padrão em 32
.
Removido no PHP 7.1.0.
session.use_strict_mode
bool
session.use_strict_mode
especifica se o
módulo utilizará o modo id de sessão rigoroso (strict). Se esse modo estiver ativo,
o módulo não aceitará um id de sessão não inicializado. Se um id de sessão
não inicializado for enviado pelo browser, um novo id de sessão é devolvido para o browser.
Aplicações são protegidas da fixação de sessão adotando o
modo de sessão rigoroso (strict).
Padrão é 0
(desativado).
Nota: Ativar
session.use_strict_mode
é mandatório para segurança geral das sessões. A todos os sites é recomendado mantê-lo ativado. Veja o código em session_create_id() para mais detalhes.
Se um manipulador de sessão personalizado registrado via session_set_save_handler()
não implementa SessionUpdateTimestampHandlerInterface::validateId(),
nem fornece o callback validate_sid
, respectivamente,
o modo rigoroso(strict) do ID da sessão é efetivamente desativado, independentemente do valor desta diretiva.
É importante observar que SessionHandler não
implementa SessionHandler::validateId().
session.use_cookies
especifica se o
módulo utilizará cookies para guardar a id da sessão no lado do
cliente. O padrão é 1
(habilitado).
session.use_only_cookies
especifica se
o módulo usará somente
cookies para guardar a id no lado do cliente.
Habilitar esta configuração previne ataques envolvendo passagem de
IDs de sessão nas URLs.
Padrão 1
(ativado).
session.cookie_lifetime
especifica o tempo de vida do
cookie em segundos que é enviado para o browser. O valor 0
significa "até o browser ser fechado". O padrão é
0
. Veja também
session_get_cookie_params() e
session_set_cookie_params().
Nota: O timestamp de expiração é informado em relação à hora do servidor, que não necessariamente coincide com o horário do navegador do cliente.
session.cookie_path
especifica o caminho para definir
em session_cookie. O padrão é /
. Veja também
session_get_cookie_params() e
session_set_cookie_params().
session.cookie_domain
especifica o domínio para
definir no cookie de sessão. O padrão é nenhum significando o nome do
servidor que gerou o cookie de acordo com a especificação dos cookies.
Veja também session_get_cookie_params() e
session_set_cookie_params().
session.cookie_secure
especifica se os
cookies devem ser enviados apenas em conexões seguras. Com esta opção definida
para on
, as sessões só funcionam com conexões HTTPS.
Se estiver em off
, as sessões funcionam tanto com HTTP quanto
com HTTPS. O padrão é off
.
Veja também
session_get_cookie_params() e
session_set_cookie_params().
Lax
e Strict
significam que o cookie
não será enviado entre domínios para solicitações POST; Lax
enviará o cookie para solicitações GET entre domínios, enquanto Strict
não enviará.
session.cache_limiter
string
session.cache_limiter
especifica o método de
controle de cache para usar em páginas de sessão.
Pode ser um dos seguintes valores:
nocache
, private
,
private_no_expire
ou public
.
Padrão nocache
. Veja também a documentação de
session_cache_limiter() para
ver o que os valores significam.
session.cache_expire
int
session.cache_expire
especifica o time-to-live (tempo de vida)
para páginas de sessão em cache, em minutos, não tendo efeito na limitação de
nocache. O padrão é 180
. Veja também
session_cache_expire().
session.use_trans_sid
bool
session.use_trans_sid
se o suporte a
sid transparente está habilitado ou não. O padrão é
0
(desabilitado).
Nota: Gerenciamento de sessões baseadas em URLs tem riscos de segurança adicionais comparados ao gerenciamento baseado em cookies. Usuários podem enviar uma URL que contenha uma ID de sessão ativa para seus amigos por e-mail ou usuários podem salvar uma URL que contenha uma ID de sessão em seus bookmarks e acessar seu site sempre com a mesma ID de sessão, por exemplo. Desde o PHP 7.1.0 uma URL completa, por exemplo https://php.net/, é manipulada pelo recurso trans sid. Versões anteriores do PHP manipulavam apenas URLs relativas. Alvos de rewrite estão definidos em session.trans_sid_hosts.
session.trans_sid_tags
especifica quais tags HTML
serão reescritas para incluir IDs de sessão quando o suporte ao SID transparente
estiver ativo. Por padrão:
a=href,area=href,frame=src,input=src,form=
form
é uma tag especial. <input hidden="session_id" name="session_name">
é adicionado a variável de formulário.
Nota: Antes do PHP 7.1.0 url_rewriter.tags era utilizada para essa funcionalidade. Desde o PHP 7.1.0,
fieldset
não é mais considerada uma tag especial.
session.trans_sid_hosts
string
session.trans_sid_hosts
especifica quais hosts
serão reescritos para incluir IDs de sessão quando o suporte ao SID transparente
estiver ativo. Padrão para $_SERVER['HTTP_HOST']
Vários hosts podem ser especificados, separados por ",", mas sem espaços
entre os hosts. Por exemplo: php.net,wiki.php.net,bugs.php.net
session.sid_length
int
session.sid_length
permite especificar o
tamanho do texto do ID de sessão. IDs de sessão podem ter tamanhos entre 22
a 256 letras.
O padrão é 32. Para compatibilidade, você pode especificar 32,
40, etc. IDs de sessão maiores são mais difíceis de adivinhar. Ao menos 32 letras
é o recomendados.
Nota de compatibilidade: Utilize 32 para que
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=4,
session.hash_function
=1 (SHA1) e
session.hash_bits_per_character
=6. Utilize 26 para que
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=5. Utilize 22 para que
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=6. Você precisa
configurar os valores INI para ao menos 128 bits no ID de sessão. Não
se esqueça de configurar o valor apropriado em
session.sid_bits_per_character
, de outra forma
você terá um ID de sessão fraco.
Nota: Esta configuração foi introduzida no PHP 7.1.0.
session.sid_bits_per_character
int
session.sid_bits_per_character
permite especificar o
número de bits codificados no ID de sessão. Os valores possíveis são
'4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", ",").
O padrão é 4. Mais bits resultam em IDs de sessão mais fortes. 5 é
recomendado para a maioria dos elementos.
Nota: Esta configuração foi introduzida no PHP 7.1.0.
session.hash_function
mixed
session.hash_function
permite especificar o algoritimo de
hash usado para gerar os IDs de sessão. '0' indica MD5 (128 bits) e
'1' indica SHA-1 (160 bits).
Também é possível especificar qualquer um dos algoritmos
disponibilizados pela extensão hash (se
habilitada), como sha512
ou
whirlpool
. A lista completa de algoritmos suportados pode
ser obtida com a função hash_algos().
Nota: Removido no PHP 7.1.0.
session.hash_bits_per_character
int
session.hash_bits_per_character
permite a você definir
quantos bits são guardados em cada caractere ao converter os dados binários
de hash para algo legível. Os valores possíveis são '4' (0-9, a-f),
'5' (0-9, a-v) e '6' (0-9, a-z, A-Z, "-", ",").
Nota: Removido no PHP 7.1.0.
session.upload_progress.enabled
bool
session.upload_progress.cleanup
bool
Nota: É altamente recomendável manter esse recurso ligado.
session.upload_progress.prefix
string
$_POST[ini_get("session.upload_progress.name")]
para
prover um índice único.
Padrão "upload_progress_".
session.upload_progress.name
string
$_POST[ini_get("session.upload_progress.name")]
não for passado ou estiver indisponível, o progresso de upload não será registrado.
Padrão "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq
mixed
session.upload_progress.min_freq
int
session.lazy_write
bool
session.lazy_write
, quando configurado para 1, significa que os
dados de sessão somente serão reescrito caso eles mudem. O padrão é 1, habilitado.
O progresso de upload não será registrado, a não ser que session.upload_progress.enabled esteja habilitado e a variável $_POST[ini_get("session.upload_progress.name")] esteja definida. Veja Progresso de Upload em sessões para mais detalhes dessa funcionalidade.