session_save_path

(PHP 4, PHP 5, PHP 7, PHP 8)

session_save_path获取和/或设置当前会话保存路径

描述

session_save_path(?string $path = null): string|false

session_save_path() 返回用于保存会话数据的当前目录的路径。

参数

path

会话数据路径。如果指定且不为 null,则将更改保存数据的路径。 session_save_path() 需要在 session_start() 之前调用才能实现此目的。

注意:

在某些操作系统上,您可能需要在能够高效处理大量小文件的系统上指定路径。例如,在 Linux 上,reiserfs 可能比 ext2fs 提供更好的性能。

返回值

返回用于数据存储的当前目录的路径,或在失败时返回 false

变更日志

版本 描述
8.0.0 path 现在可以为空。

参见

添加注释

用户贡献的注释 6 个注释

58
mdibbets at outlook dot nospam
10 年前
我在 public html 文件夹旁边创建了一个文件夹,并将以下几行放在 index.php 的最前面。

会话文件夹位置

/domains/account/session

index.php 位置

/domains/account/public_html/index.php

我在 index.php 第 0 行放置的内容

<?php
ini_set
('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
session_start();

这是唯一对我有效的解决方案. 希望这对某些人有所帮助.
35
alvaro at demogracia dot com
14 年前
Debian 不使用默认的会话垃圾回收器。相反,它将 session.gc_probability 设置为零,并运行一个 cron 作业来清理默认目录中的旧会话数据。

因此,如果您的网站使用 session_save_path() 设置自定义位置,您还需要为 session.gc_probability 设置一个值,例如:

<?php
session_save_path
('/home/example.com/sessions');
ini_set('session.gc_probability', 1);
?>

否则,'/home/example.com/sessions' 中的旧文件将永远不会被删除!
7
ohcc at 163 dot com
6 年前
如果 session.save_handler 设置为 files,在具有最大路径长度限制的系统上,当会话数据文件的路径太长时,php 可能会出现类似“没有此类文件或目录”的错误,并且无法启动会话,即使会话保存文件夹确实存在于磁盘上。

您应该

1. 保持会话保存文件夹的绝对路径不要太长
2. 如果您使用的是 PHP 7.1+,不要将 session.sid_length 设置为过大的数字,例如 255

我曾经在 Windows 上遇到过这个问题,并且浪费了几个小时才解决。
14
sampathperera at hotmail dot com - Sri Lanka
16 年前
在集群 Web 服务器上的会话!

我们在使用 2 个 Web 服务器集群时遇到了 PHP 会话处理问题。问题是,一个服务器的会话数据在另一个服务器上不可用。

因此,我在两个服务器的 php.ini 文件中进行了一个简单的配置。将 session.save_path 的默认值更改为两个服务器上的共享文件夹 (/mnt/session/)。

它对我有用。:)
1
Ale
3 个月前
此函数似乎只是从 php.ini 的 [Session] 部分返回 session.save_path 的值。这有一个重要的含义:返回的值也可以像“0;0660;/var/lib/php/sessions”一样,这当然不是有效的路径。

一种即使存在分号也能提取路径的方法可能是这样的

$ssp = explode(';', session_save_path());
echo end($ssp);

由于 end 引用了数组,因此如果不依赖于中间变量,就无法真正实现单行代码。
-39
hrushiemail at gmail dot com
5 年前
<?php
ini_set
('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/tmp'));
ini_set('session.gc_probability', 1);
session_start();

?>

(为了使用上面的代码,请在您的目录中创建一个名为 tmp 的文件夹/目录)
To Top