会话文件在Apache / PHP中的位置

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

默认的 session.save_path设置为"" ,将评估您的系统的临时目录。 在https://bugs.php.net/bug.php?id=26757看到这个评论,指出:;

save_path在即将到来的释放(sic)中的新默认值将是空string,这将导致临时目录被探测。

您可以使用sys_get_temp_dir返回用于临时文件的目录path

要查找当前会话保存path,可以使用

  • session_save_path() – 获取和/或设置当前会话保存path

参考这个答案找出当这个函数返回一个空string时的临时path是什么。

首先使用ini_get('session.save_path')phpinfo()检查session.save_path的值。 如果不是空的,则会显示会话文件的保存位置。 在很多情况下,它默认为空,在这种情况下阅读:

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

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

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

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

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

Ubuntu / Debian当前位置:
旧的php5安装: /etc/php5/apache2/php.ini
Ubuntu 16.XX和/或php5或php7:/ /etc/php/*/apache2/php.ini /php/*/apache2/ /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版本相同,只要保存path默认设置。 您也可以使用类似的命令将Apache设置回显到wget / curl命令或网页。 但是,只要在Apache的php.ini中grep就可以了。

编辑:每@aesede评论 – >增加php -i 。 谢谢

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

我相信它在/ tmp /中。 检查你的phpinfo函数,但应该在那里说session.save_path。

根据您运行的服务器的types,可能会有所不同。 要find该目录,请在您的php.ini文件中search以下内容。

upload_tmp_dir =“c:/ wamp / tmp”

目录可以为你不同。