php自定义session存储路径

本文介绍了如何正确配置PHP的session存储路径,通过手动创建所需的目录结构来解决因目录不存在而导致的session启动失败的问题,并提供了一个PHP函数实现自动创建session所需的所有子目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、找到php.ini配置文件,找到session.save_path,修改如下:

其中2表示session存储的目录深度,也就是分目录,避免一个目录下文件太多,造成IO负担。
session.save_path = "2;D:\xxx\php54\session"

2、如上设置后,重启apache后,在php文件session_start()后会报错。
Warning: session_start(): open(D:\xxx\php54\session\b\9\sess_b9h5uo3bra9j28f4p4rim8mg02, O_RDWR) failed: No such file or directory (2) in D:\wwwroot\test\index.php on line 2
Warning: Unknown: open(D:\xxx\php54\session\b\9\sess_b9h5uo3bra9j28f4p4rim8mg02, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (2;D:\xxx\php54\session) in Unknown on line 0

3、原来是session下的\b\9目录需要手动创建,所以写了一个函数。
<?php
function createSessionDir($sessionPath = '') {
    if(empty($sessionPath)) {
        return false;
    }
    $dirNameArr = array_merge(range(0, 9), range('a', 'z'));
    $sessionPath = rtrim($sessionPath, '\/') . DIRECTORY_SEPARATOR;
    foreach ($dirNameArr as $dirName) {
        $dirPath = $sessionPath . $dirName . DIRECTORY_SEPARATOR;
        foreach ($dirNameArr as $subDirName) {
            @mkdir($dirPath . $subDirName, 0777, true);
        }
    }
}

createSessionDir('D:\xxx\php54\session');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值