Apache / PHP中会话文件的位置

时间:2011-02-07 23:19:09

标签: php apache session

在Ubuntu 10.10上安装Apache / PHP时,会话文件的默认位置是什么?

9 个答案:

答案 0 :(得分:63)

默认 session.save_path设置为"",它将评估系统的临时目录。请参阅https://bugs.php.net/bug.php?id=26757上的评论:

  

即将发布的版本(sic)中save_path的新默认值将为空字符串,这会导致临时目录被探测。

您可以使用sys_get_temp_dir to return the directory path used for temporary files

要查找当前会话保存路径,您可以使用

请参阅this answer以了解此函数返回空字符串时的临时路径。

答案 1 :(得分:58)

首先使用session.save_pathini_get('session.save_path')检查phpinfo()的值。如果它不是空的,那么它将显示会话文件的保存位置。在许多情况下,默认情况下它是空的,在这种情况下请继续阅读:

在Ubuntu或Debian计算机上,如果未设置session.save_path,则会话文件将保存在/var/lib/php5中。

在RHEL和CentOS系统上,如果未设置session.save_path,会话文件将保存在/var/lib/php/session

我认为如果你从源代码编译PHP,那么当没有设置session.save_path时,会话文件将保存在/tmp中(我自己没有测试过)。

答案 2 :(得分:15)

/tmp/以外的另一个常见默认位置是/var/lib/php5/

答案 3 :(得分:11)

如果不确定已编译的默认值,请查看Apache的php.ini:

Ubuntu / Debian当前位置:
较旧的php5安装:/etc/php5/apache2/php.ini
Ubuntu 16.XX和/或php5或php7:/etc/php/*/apache2/php.ini

通常,这将显示已注释的默认值。

或:

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

或:

php -i | grep session.save_path

或:

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

来自命令行。

注 -

对于保存路径默认设置,php.ini的'cli'/命令行版本通常与Apache版本相同。您还可以使用类似的命令将Apache设置回显到wget / curl命令或网页。但是,更容易在Apache php.ini中使用grep。

编辑:Per @aesede评论 - >添加了php -i。感谢

答案 4 :(得分:3)

在Mac上查找正确的会话路径时遇到了同样的问题。总而言之,我发现CLI PHP具有与Apache模块不同的临时目录:Apache使用/var/tmp,而CLI使用/var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T之类的东西。但是当sys_get_temp_dir()为空时,session.save_path这两种方式都让我走上了正确的道路。使用PHP 5.5.4。

答案 5 :(得分:1)

我相信它在/ tmp /。检查你的phpinfo函数,它应该在某处说session.save_path。

答案 6 :(得分:1)

以上所述对我都不起作用,它使用了带有PHP 7.2的CentOS 7的IUS存储库:

php -v
> PHP 7.2.30 (cli) (built: Apr 19 2020 00:32:29) ( NTS )

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

php -r 'echo sys_get_temp_dir(), "\n";'
> /tmp

但是,会话不是保存在/tmp文件夹中,而是保存在/var/lib/php/mod_php/session/文件夹中:

ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k  sess_ck5dtaerol28fpctj6nutbn6fn  sess_i24lgt2v2l58op5kfmj1k6qb3h  sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t  sess_dvrt9fmfuolr8bqt9efdpcbj0d  sess_igdaksn26hm1s5nfvtjfb53pl7  sess_tgf5b7gkgno8kuvl966l9ce7nn

答案 7 :(得分:0)

找到当前session.save_path值的唯一surefire选项始终是在您要查找会话存储目录的确切环境中,与phpinfo()进行检查。

原因:可以通过覆盖session.save_path值或通过在运行时使用php.ini对其进行设置来改变ini_set('session.save_path','/path/to/folder');的各种情况。例如,Web服务器管理面板(例如ISPConfig,Plesk等)经常对此进行修改,以使每个网站都有其自己的带有会话文件的目录。

答案 8 :(得分:-8)

根据您运行的服务器类型,它可能会有所不同。要找到目录,请在php.ini文件中搜索以下内容。

upload_tmp_dir =“c:/ wamp / tmp”

目录可能与您有所不同。