Qual é a localização padrão dos arquivos de sessão em uma instalação do Apache/PHP no Ubuntu 10.10?
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.
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).
Outro local padrão comum além de /tmp/
é /var/lib/php5/
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
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.
Eu acredito que seja em/tmp /. Verifique sua função phpinfo, no entanto, deve dizer session.save_path em algum lugar.