Apache/PHP中会话文件的位置

cam*_*aca 69 php apache session

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

Gor*_*don 70

默认 session.save_path设置为"",这将评估你的系统的临时目录.请在https://bugs.php.net/bug.php?id=26757上查看此评论:

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

您可以使用它sys_get_temp_dir来返回用于临时文件的目录路径

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

请参阅此答案以了解此函数返回空字符串时的临时路径.

  • 从命令行只需做php -r'echo session_save_path(),"\n";' (60认同)
  • 警告!!我认为运行php -r'echo session_save_path(),“ \ n”;' 如上所述,将使用其他php.ini文件(也许是/etc/php/7.0/cli/php.ini而不是/etc/php/7.0/apache2/php.ini),因此可能具有不同的“ session.save_path” (3认同)

Ric*_*ich 63

首先检查session.save_path使用ini_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(我自己没有测试过).


Kev*_*ers 15

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

  • 我想在共享主机上是这样的,其他人不能试图劫持人们的会议.即,写入会话说"username:admin"并设置任意会话ID,然后将PHPSESSID设置为该ID.在共享主机环境中访问像Drupal或Wordpress这样的东西会很容易.(它只会将您作为管理员帐户登录) (2认同)

bsh*_*hea 13

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

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

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

要么:

$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
Run Code Online (Sandbox Code Playgroud)

要么:

php -i | grep session.save_path

php -r 'echo phpinfo();' | grep session.save_path
Run Code Online (Sandbox Code Playgroud)

要么:

$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
Run Code Online (Sandbox Code Playgroud)

从命令行.

注意-

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

编辑:Per @aesede评论 - >已添加/etc/php5/apache2/php.ini.谢谢

  • 仅供参考,您可以在CLI中执行`php -i`以获得等效的phpinfo(). (6认同)