framework icon indicating copy to clipboard operation
framework copied to clipboard

多应用模式下跨应用读取Session不成功问题

Open wubiandaxian opened this issue 2 years ago • 1 comments

TP版本:6.0.8 多应用: Admin和Index

在Index应用中用助手函数设置session,会在runtime\index\session中生成文件,这样Admin应用读不到。 tp6.0手册是这样写的:

多应用情况下默认Session是跨应用的,也就是说多应用之间是共享会话数据的,如果不希望共享会话数据,可以给每个应用设置不同的前缀prefix。

如果是File类型的话,默认的session会话数据保存在runtime/session目录下面,你可以设置path改变存储路径。

在源码的session driver中,File文件中设置保存路径时,写法如下:

$this->config['path'] = $app->getRuntimePath() . 'session' . DIRECTORY_SEPARATOR;

打印了一下 $app->getRuntimePath(),得到的结果确实是包含应用目录,而非单纯的“runtime”目录。所以造成的结果就是session在默认上是应用隔离的。

不知道这个现象是我这边操作有误,还是框架确实存在这个问题。

wubiandaxian avatar Nov 12 '22 09:11 wubiandaxian

你可以试试在config/session.php中定义一下path,追加一个属性 'path' => '你的网站运行路径'

Rodots avatar Nov 19 '22 15:11 Rodots