no servidor onde você executar o aplicativo php, por caminho específico que você tem que verificar com phpinfo ()
densityx
Respostas:
168
A localização do $_SESSIONarmazenamento variável é determinada pela session.save_pathconfiguração do PHP . Geralmente, isso ocorre /tmpem um sistema Linux / Unix. Use a phpinfo()função para exibir suas configurações específicas, se não tiver 100% de certeza, criando um arquivo com este conteúdo no DocumentRootdomínio:
<?php
phpinfo();?>
Aqui está o link para a documentação do PHP nesta configuração:
Como já mencionado, o conteúdo é armazenado no servidor. No entanto, a sessão é identificada por um ID de sessão, que é armazenado no cliente e enviado com cada solicitação. Normalmente, o ID da sessão é armazenado em um cookie, mas também pode ser anexado aos URLs. (Esse é o PHPSESSIDparâmetro de consulta que você vê algumas vezes)
+1 porque você já deu a entender que os cookies não armazenam o conteúdo de $ _SESSION (esses conteúdos são armazenados no servidor, por isso não são vulneráveis à modificação introduzida pelo cliente)
shufler
12
Excelente resposta! Eu estava procurando a pergunta: "Por que as sessões expiram após a exclusão do cache do navegador?". E você salvou meu dia.
Aluno
2
servidor criar arquivo sess_7nu9p0fvidvva6ouaugqcc8292 e no alerta do navegador (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb
2
Plus1 - Para responder à pergunta: "... armazenado no cliente ou no servidor?"
Alex Vargas #
22
Eles geralmente são armazenados no servidor. O local onde eles estão armazenados é de sua responsabilidade como desenvolvedor. Você pode usar a session.save_handlervariável de configuração e session_set_save_handlerpara controlar como as sessões são salvas no servidor. O método de salvamento padrão é salvar sessões em arquivos. Onde eles são salvos é controlado pela session.save_pathvariável.
Uma adição: Note-se que, caso "/ tmp" seja o diretório em que os dados da sessão estão armazenados (o que parece ser o valor padrão), as sessões não persistirão após a reinicialização do servidor da Web, como "/ tmp "é frequentemente eliminado durante a reinicialização. O conceito de persistência do cliente permanece e cai com a persistência do armazenamento no servidor - o que pode falhar se o diretório "/ tmp" for usado para dados da sessão.
No Debian (não é o caso da maioria das distribuições Linux?), Ele é salvo em / var / lib / php5 /. Como mencionado acima, ele está configurado no seu php.ini.
Obrigado, é tudo o que eu queria. Sim, se eles não estavam no lugar de sempre, precisarei abrir os INIs, mas eu só queria saber "Ei, onde as sessões geralmente são armazenadas?" / var / lib / php / sessions / é.
Eric L.
7
Como o Sr. Taylor apontou, isso geralmente é definido no php.ini. Geralmente eles são armazenados como arquivos em um diretório específico.
A maioria das sessões define uma chave de usuário (chamada de sessionid) no computador do usuário, semelhante à seguinte: 765487cf34ert8dede5a562e4f3a7e12. Em seguida, quando uma sessão é aberta em outra página, ela verifica a chave do usuário no computador e corre para o servidor para obter suas variáveis.
Se você limpar o cache por engano, sua chave de usuário também será limpa. Você não poderá mais obter suas variáveis do servidor, pois não conhece seu ID.
Muitas das respostas acima são opacas. Na minha opinião, o autor desta pergunta simplesmente quer saber onde variáveis de sessão são armazenadas por padrão. De acordo com isso: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions, eles são simplesmente armazenados no servidor por padrão . Felizmente, outros acharão essa contribuição significativa.
Respostas:
A localização do
$_SESSION
armazenamento variável é determinada pelasession.save_path
configuração do PHP . Geralmente, isso ocorre/tmp
em um sistema Linux / Unix. Use aphpinfo()
função para exibir suas configurações específicas, se não tiver 100% de certeza, criando um arquivo com este conteúdo noDocumentRoot
domínio:Aqui está o link para a documentação do PHP nesta configuração:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
fonte
Como já mencionado, o conteúdo é armazenado no servidor. No entanto, a sessão é identificada por um ID de sessão, que é armazenado no cliente e enviado com cada solicitação. Normalmente, o ID da sessão é armazenado em um cookie, mas também pode ser anexado aos URLs. (Esse é o
PHPSESSID
parâmetro de consulta que você vê algumas vezes)fonte
Eles geralmente são armazenados no servidor. O local onde eles estão armazenados é de sua responsabilidade como desenvolvedor. Você pode usar a
session.save_handler
variável de configuração esession_set_save_handler
para controlar como as sessões são salvas no servidor. O método de salvamento padrão é salvar sessões em arquivos. Onde eles são salvos é controlado pelasession.save_path
variável.fonte
Uma adição: Note-se que, caso "/ tmp" seja o diretório em que os dados da sessão estão armazenados (o que parece ser o valor padrão), as sessões não persistirão após a reinicialização do servidor da Web, como "/ tmp "é frequentemente eliminado durante a reinicialização. O conceito de persistência do cliente permanece e cai com a persistência do armazenamento no servidor - o que pode falhar se o diretório "/ tmp" for usado para dados da sessão.
fonte
No Debian (não é o caso da maioria das distribuições Linux?), Ele é salvo em / var / lib / php5 /. Como mencionado acima, ele está configurado no seu php.ini.
fonte
Estou usando o Ubuntu e minhas sessões são armazenadas em / var / lib / php5.
fonte
Como o Sr. Taylor apontou, isso geralmente é definido no php.ini. Geralmente eles são armazenados como arquivos em um diretório específico.
fonte
Para o ubuntu 16.10, as sessões são salvas em / var / lib / php / session / ...
fonte
Como funciona? Como ele sabe que sou eu?
A maioria das sessões define uma chave de usuário (chamada de sessionid) no computador do usuário, semelhante à seguinte: 765487cf34ert8dede5a562e4f3a7e12. Em seguida, quando uma sessão é aberta em outra página, ela verifica a chave do usuário no computador e corre para o servidor para obter suas variáveis.
Se você limpar o cache por engano, sua chave de usuário também será limpa. Você não poderá mais obter suas variáveis do servidor, pois não conhece seu ID.
fonte
Nas minhas máquinas Ubuntu, as sessões são armazenadas em
e você tem que
sudo ls
neste diretório somentels
ele lançaráE no meu servidor Windows Wamp, as sessões php são armazenadas em
e se você instalar php autônomo no Windows, não haverá valor definido por padrão
fonte
Muitas das respostas acima são opacas. Na minha opinião, o autor desta pergunta simplesmente quer saber onde variáveis de sessão são armazenadas por padrão. De acordo com isso: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions, eles são simplesmente armazenados no servidor por padrão . Felizmente, outros acharão essa contribuição significativa.
fonte