web-dev-qa-db-pt.com

Localização para arquivos de sessão no Apache / PHP

Qual é a localização padrão dos arquivos de sessão em uma instalação do Apache/PHP no Ubuntu 10.10?

63
cambraca

O default session.save_path está definido como "" que será avaliado no diretório temp do seu sistema. Veja este comentário em https://bugs.php.net/bug.php?id=26757 afirmando:

O novo padrão para save_path no próximo releess (sic) será a string vazia, que faz com que o diretório temporário seja testado.

Você pode usar sys_get_temp_dir para retornar o caminho do diretório usado para arquivos temporários

Para encontrar o caminho de salvamento da sessão atual , você pode usar

Consulte esta resposta para descobrir qual é o caminho temp quando esta função retorna uma string vazia.

63
Gordon

Primeiro, verifique o valor de session.save_path usando ini_get('session.save_path') ou phpinfo(). Se isso não for vazio, ele mostrará onde os arquivos da sessão serão salvos. Em muitos cenários, ele está vazio por padrão, nesse caso, continue lendo:

Em máquinas Ubuntu ou Debian, se session.save_path não estiver configurado, os arquivos de sessão serão salvos em /var/lib/php5.

Nos sistemas RHEL e CentOS, se session.save_path não estiver configurado, os arquivos de sessão serão salvos em /var/lib/php/session

Eu acho que se você compilar PHP da fonte, então quando session.save_path não estiver definido, os arquivos de sessão serão salvos em /tmp (eu não testei isso mesmo).

58
Rich

Outro local padrão comum além de /tmp/ é /var/lib/php5/

15
Kevin Borders

Se não tiver certeza do padrão compilado, veja o arquivo php.ini do Apache:

Locais atuais do Ubuntu/Debian:
Instalação mais antiga do php5: /etc/php5/Apache2/php.ini
Ubuntu 16.XX e/ou php5 ou php7: /etc/php/*/Apache2/php.ini

Normalmente, isso mostrará o valor padrão comentado.

ou:

php -r 'echo session_save_path() . "\n";'

ou:

php -i | grep session.save_path

ou:

php -r 'echo phpinfo();' | grep session.save_path

da linha de comando.

Nota-

A versão da linha 'cli'/command do php.ini é normalmente o mesmo que a versão do Apache no que diz respeito às configurações padrão do caminho de salvaguarda. Você também pode usar um comando semelhante para repetir a configuração do Apache em um comando/página da Web do wget/curl. Mas, muito mais fácil apenas para grep para ele no Apache php.ini.

EDIT: Por comentário @aesede -> Adicionado php -i. obrigado

11
bshea

Eu tive o mesmo problema de descobrir o caminho correto para sessões em um Mac. Apesar de tudo, descobri que o CLI PHP tem um diretório temporário diferente do módulo do Apache: o Apache usava /var/tmp, enquanto o CLI usava algo como /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T. Mas nos dois sentidos, sys_get_temp_dir() me deu o caminho certo quando session.save_path está vazio. Usando o PHP 5.5.4.

3
themarketka

Eu acredito que seja em/tmp /. Verifique sua função phpinfo, no entanto, deve dizer session.save_path em algum lugar.

1
profitphp