我在Apache上运行PHP / Yii应用程序。我尝试过以下操作:
这样做会导致PHP会话被破坏,甚至无需重启Apache。有任何想法吗?我已经检查了我的PHP save_path,它应该不是问题,因为我使用Redis进行会话处理。我的Apache配置如下:
DocumentRoot "www"
<Directory "www">
Options -Indexes +FollowSymLinks
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
...
修改 我怀疑问题出在Yii身上。经过一些进一步的测试后,看起来会话数据实际上并没有被破坏。我已切换到基于文件的会话。这就是我所看到的:
用户登录,会话ID设置为tdv3l6jgf2sb1dnutt7updhfo1
会话数据如下:
array(5){ [ “20b30da82f6dcc260a66f6a1044a5c3a_ ID”] =&GT; string(1)“2” [ “20b30da82f6dcc260a66f6a1044a5c3a _name”] =&GT; string(8)“ewest fb” [ “20b30da82f6dcc260a66f6a1044a5c3afbId”] =&GT; string(10)“1028251971” [ “20b30da82f6dcc260a66f6a1044a5c3aisFbUser”] =&GT;布尔(真) [ “20b30da82f6dcc260a66f6a1044a5c3a__states”] =&GT; array(3){ [ “FBID”] =&GT; bool(true)[“isFbUser”] =&gt; bool(true)[“avatar”] =&gt;布尔(真) } }
会话文件在/ tmp
我如上所述更改了www符号链接。会话ID保持不变,会话数据完好无损!但是Yii :: app() - &gt; user-&gt; isGuest正在评估为true。所以会话数据仍然存在,但Yii认为我已经退出了!
是否有其他位置Yii将用户数据写入? state.bin文件位于www。
之外的运行时目录中答案 0 :(得分:2)
我无法弄清楚导致问题的原因,但我确实找到了解决方法。
而不是:
我现在:
所以“www”符号链接的真实路径永远不会改变。这解决了这个问题,我不知道为什么会这样。除此之外,我手动设置Yii的securityManager的validationKey和encryptionKey。
我唯一怀疑的是APC和我的设置。
答案 1 :(得分:0)
Yii 1.x中有奇怪的代码: СApplication.php
public function getId()
{
if($this->_id!==null)
return $this->_id;
else
return $this->_id=sprintf('%x',crc32($this->getBasePath().$this->name));
}
因此,您只需在应用程序配置文件中设置应用程序ID。
例如,protected / config / web.php
return [
'id'=>'my application'
...