session.auto_start should always be "Off".
session.auto_start=On is considered "wrong" by Zend_Session as it causes an E_NOTICE to be thrown when Zend_Session::start() is called (either directly or indirectly, e.g., through Zend_Session_Namespace).
Configurações em Execução
O comportamento dessas funções podem ser modificado pelas configurações do php.ini.
| Nome | Padrão | Modificável | Mudanças |
|---|---|---|---|
| session.save_path | "/tmp" | PHP_INI_ALL | |
| session.name | "PHPSESSID" | PHP_INI_ALL | |
| session.save_handler | "files" | PHP_INI_ALL | |
| session.auto_start | "0" | PHP_INI_ALL | |
| session.gc_probability | "1" | PHP_INI_ALL | |
| session.gc_divisor | "100" | PHP_INI_ALL | |
| 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 | Disponível desde o PHP 4.0.4. |
| session.cookie_httponly | "" | PHP_INI_ALL | Disponível desde o PHP 5.2.0. |
| session.use_cookies | "1" | PHP_INI_ALL | |
| session.use_only_cookies | "0" | PHP_INI_ALL | Disponível desde o PHP 4.3.0 |
| session.referer_check | "" | PHP_INI_ALL | |
| session.entropy_file | "" | PHP_INI_ALL | |
| session.entropy_length | "0" | 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 no PHP <= 4.2.3. PHP_INI_PERDIR no PHP < 5. Disponível desde o PHP 4.0.3. |
| session.bug_compat_42 | "1" | PHP_INI_ALL | Disponível desde o PHP 4.3.0 |
| session.bug_compat_warn | "1" | PHP_INI_ALL | Disponível desde o PHP 4.3.0 |
| session.hash_function | "0" | PHP_INI_ALL | Disponível desde o PHP 5.0.0 |
| session.hash_bits_per_character | "4" | PHP_INI_ALL | Disponível desde o PHP 5.0.0 |
| url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | Disponível desde o PHP 4.0.4. |
Para mais detalhes e definições dos modos PHP_INI_*, veja Aonde uma configuração deve ser definida.
O sistema de gerenciamento de sessões suporta um número de opções de configuração que você pode colocar em seu arquivo php.ini. Nós daremos um breve resumo.
- session.save_handler string
- session.save_handler define o nome do manipulador que é usado para guardar e devolver dados associados com a sessão. Padrão inicial files. Veja também session_set_save_handler().
- session.save_path string
-
session.save_path define o argumento que é passado para o manipulador de salvação. Se você escolher o manipulador de
ausência de arquivo, este é o local onde os arquivos serão criados.
Padrão /tmp. Veja também
session_save_path().
Há um argumento N opcional para esta dietiva que determina o número de níveis de diretório que seus arquivos de sessão serão extendidos. Por exemplo, definindo para '5;/tmp' pode levar a criação de um arquivo de sessão e localização como /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . Para fazer uso do N você deve criar todos estes diretórios antes de usar. Um pequeno script shell existe em ext/session para fazer isto, ele é chamado mod_files.sh. Também note se N é usada e maior do que and greater than 0 então a "automatic garbage collection" não será executada, veja uma cópia do php.ini para mais informação. Veja, se você usa N if you use N, be certifique-se de cercar session.save_path com "aspas" porque o separador (;) é também usado para comentátios no php.ini.
AvisoSe você deixar isto definido num diretório de leitura público, tal como /tmp (o padrão), outros usuários no servidor poderão raptar sessõoes pegando a lista de arquivos nesse diretório.
Nota: Antes do PHP 4.3.6 os usuários de Windows tem que mudar esta variável para fazer funções de sessão no PHP. Certifique-se de especifica um caminho válido, ex.: c:/temp.
- session.name string
- session.name especifíca o nome da sessão que é usada como um nome de cookie. Ele somente conteria caracteres alfanuméricos. Padrão inicial PHPSESSID. Veja também session_name().
- session.auto_start boolean
- session.auto_start especifíca se o módulo da sessão começou uma sessão automaticamente num pedido no início. Definido iniciamente em 0 (desabilitado).
- session.serialize_handler string
- session.serialize_handler define o nome do manipulador que é usado para publicar/despublicar dados em série (serialize/deserialize). Atualmente, como um formato interno no PHP (nome php) e WDDX é suportado (nome wddx). WDDX está apenas disponível, se o PHP está compilado com suporte a WDDX . Definição inicial php.
- session.gc_probability integer
- 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 integer
- 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 propabilidade é cauculada usando gc_probability/gc_divisor, ex. 1/100 indica que existe 1% de chance que o processo GC comece em cada requisição.. O padrão para session.gc_divisor é 100.
- session.gc_maxlifetime integer
-
session.gc_maxlifetime especifíca o número de
segundos após os dados terem sido considerados como lixo ('garbage')
e limpados. Isso ocorre durante o início da sessão
Desde o PHP 4.2.3 é usado mtime (data de modificação) ao invés de atime. Assim você
não terá problemas em sistemas de arquivos onde atime não esteja disponível.
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 estara limpando os dados. Neste caso, use esta diretiva em conjunto com session.save_path.
Nota: Se você está usando o file-based session handler como padrão, seu sistema de arquivos deve manter registrado quantidade de acessos (atime). Windows FAT dessa forma não faz, então você terá que sugerir outro modo para manipular a coleção de lixo de sua sessão se você está num sistema FAT ou quaisquer outros fs onde quantidade de acessos (atime tracking) não está disponível.
- session.referer_check string
- session.referer_check contém a substring que você quer checar para cada referenciador (Referer) de HTTP. Se o referenciador foi enviado pelo cliente e a sustring 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 diz o caminho para um recurso externo (arquivo) que será usado como uma fonte de desordem no processo de criação da id da sessão. Exemplos são /dev/random or /dev/urandom que são disponíveis em muitos sistemas UNIX.
- session.entropy_length integer
- session.entropy_length especifíca o número de bytes que serão lidos do arquivo especificado acima. Definido inicialmente como 0 (desabilitado).
- session.use_cookies especifica se 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 que o módulo usará apenas cookies para guardar a id no lado do cliente. Habilitando esta configuração previne ataques envolvendo passagem de ids de sessão nas URLs. Esta configuração foi adicionada no PHP 4.3.0.
- 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(). Já que o cookie é retornado pelo browser, ele não é prolongado para todo o tempo necessário. Ele deve ser enviado manualmente usando setcookie().
- 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 arcordo com a especificação dos cookies. Veja também session_get_cookie_params() e session_set_cookie_params().
- session.cookie_secure especifíca se o cookie seria apenas enviado sob conexões seguras. O padrão é off. Esta definição foi adicionada no PHP 4.0.4. Veja também session_get_cookie_params() e session_set_cookie_params().
- marca o cookie para ser acessível apenas atráves do protocolo HTTP. Isto significa que o cookie não será acessível por linguagens de script, como o JavaScript. Esta definição pode efetivamente reduzir o roubo de identidade atráves de ataques XSS (mesmo não sendo suportado por todos os browsers).
- session.cache_limiter string
- session.cache_limiter especifíca o método de controle do cache para usar em páginas de sessão (none/nocache/private/private_no_expire/public). O padrão é nocache. Veja também session_cache_limiter().
- session.cache_expire integer
- session.cache_expire especifíca o time-to-live (termo de internet - um campo do ip header que indica o tamanho do pacote que seria permitido durar antes de ser descartado) para páginas de sessão em minutos, este não tem efeito para nocache limiter. O padrão é 180. Veja também session_cache_expire().
- session.use_trans_sid boolean
-
session.use_trans_sid se suporte a
sid transparente está habilitado ou não. O padrão é
0 (desabilitado).
Nota: Para PHP 4.1.2 ou inferior, ele só é habilitado se fizer a opção na compilação com --enable-trans-sid. A partir do PHP 4.2.0, está sempre compilado. Gerenciamentode sessões baseadas na URL 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 pode salvar uma URL que contenha uma ID de sessão para seus bookmarks e acessar seu site com a mesma ID de sessão sempre, por exemplo.
- session.bug_compat_42 boolean
- Versões do PHP 4.2.3 and ou inferior não tem documentado atributo/bug que te mostre como inicializar uma variável de sessão no escopo global, embora register_globals está desabilitado. PHP 4.3.0 e mais novos avisarão você,se este atributo está sendo usado, e se session.bug_compat_warn está também habilitado. Este funcionamento/bug pode ser desativado se desativando esta diretiva.
- session.bug_compat_warn boolean
- Versões do PHP 4.2.0 e inferiores não tem documentados atributo/bug te indique como começar uma variável de sessão no escopo global, embora register_globals esteja desabilitado. PHP 4.3.0 e posteriores avisarão a você, se este atributo está sendo usado habilitado em ambos session.bug_compat_42 and session.bug_compat_warn.
- session.hash_function integer
-
session.hash_function permite a você 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).
Nota: Isto foi introduzido no PHP 5.
- session.hash_bits_per_character integer
-
session.hash_bits_per_character permite a você definir
quantos bits são guardaddos em cada caractere ao converter os dados binários
de hash para algo que possa ser 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: Isto foi introduzido no PHP 5.
-
url_rewriter.tags epecifíca quais tags HTML
são reescritas para incluir a id de sessão se o suporte
a sid transparente está habilitado.
O padrão é a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=
Nota: Se você quer conformidade XHTML, remova a entrada form e utilize as tags <fieldset> em volta dos campos de formulário.
As definições de configuraçãotrack_vars e register_globals influenciam como as variáveis de sessão são guardadas e restauradas.
Nota: No PHP 4.0.3, track_vars está sempre ligada.
Configurações em Execução
27-Jul-2009 07:23
28-Jan-2009 06:50
Recently, I needed to change the session save_path in my program under Windows. With an ini_set('session.save_path', '../data/sessions'); (and session.gc_divisor = 1 for test), I always obtain 'Error #8 session_start(): ps_files_cleanup_dir: opendir(../data/sessions) failed: Result too large'.
I corrected this by changing with ini_set('session.save_path', realpath('../data/sessions'));
16-Oct-2008 04:17
In response to 00 at f00n, this very page explains:
"(...) if N is used and greater than 0 then automatic garbage collection will not be performed (...)"
So you can actually use custom save_path with automatic garbage collection, since you don't use the subdirectory option (that N subdirectory levels).
25-Jun-2008 11:36
After having many problems with garbage collection not clearing my sessions I have resolved it through the following.
First I found this in the php.ini (not something i noticed as i use phpinfo(); to see my hosting ini).
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method. ; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm
With this is mind there are options.
1. dont use a custom save_path.
** This means if your isp hasnt defaulted your session temp to something safer than install default or you are using a shared directory for session data then you would be wise to use named sessions to keep your session from being viewable in other people's scripts. Creating a unique_id name for this is the common method. **
2. use your custom folder but write a garbage collection script.
3. use a custom handler and a database
24-Jun-2008 11:05
To get session IDs to show up in URIs, and not get stored via cookies, you must not only set session.use_cookies to 0, but also set session.use_trans_sid to 1. Otherwise, the session ID goes neither in a cookie nor in URIs!
