2

我已经有一段时间没有使用 php 了,回到我的一个项目只是为了发现 session 变量没有被存储。这真是一个惊喜,因为我上次检查时,它工作并且我没有使用 php(因此没有更改代码或配置)。

情况如下:会话没有跨页面存储(我可以保存它并且它在页面上显示相同,但​​是当我刷新时 - 没有任何变化)。

我在这里查看了未保存的 PHP 会话数据并复制了示例:

<?php
session_start();
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1;

echo "views = ". $_SESSION['views'];
echo '<p><a href="page1.php">Refresh</a></p>';

但没有任何改变:我仍然有意见 = 1。

尽管如此,我还没有更改我的配置,但我仍然查看了 phpinfo(): 在此处输入图像描述

我检查了写入文件夹 /tmp 的权限-它们没问题,而且每次刷新后都会出现一个新文件。

然后我检查了其他浏览器中的工作:令我惊讶的是,它在 Firefox 中工作:数字在那里正确增加。

所以情况:在chrome中它不起作用,在firefox中它起作用。我默认使用 chrome。我还记得当它切换到闪烁时使用 chrome 选项,但据我所知,我把所有东西都改回来了。

知道如何修复 chrome 中的 php 会话吗?

PS:

  • cookie 在 chrome 中启用
  • 会话文件在 /tmp 我试图将它们全部删除,然后当我在 chrome 中刷新页面时 - 出现新文件
  • 在标题中我发送 Cookie:PHPSESSID=mystring 但没有会话 ID
4

5 回答 5

2

这是 Chromium 中的一个已知问题。问题 114877

在根文件夹中放置一个图标,这应该可以解决您的问题。

于 2015-03-17T17:22:43.337 回答
0

我曾经在使用不同浏览器的 php 会话时遇到一些边界情况。

如果在语句之前使用session_write_close(),您能否确认代码示例正在运行?echo

此外,您应该考虑将会话保存到另一个存储而不是默认存储 - 在 tmp 文件夹中的文件中。Memcache、redis、数据库都是可以很好扩展的选项。

于 2013-05-13T12:27:10.823 回答
0

尝试使用前缀评论session.save_path = "/tmp"指令。php.ini;

所以重启后apachephpinfo()应该no value显示session_save_path

于 2013-05-13T12:57:34.027 回答
0

请检查 php.ini 中的会话使用 cookie。如果为零,则将其激活为 1,如 session.use_cookies = 1

于 2013-12-30T04:25:00.453 回答
0

在 Chrome 中打开 cookie 并退出隐身(隐私浏览)。

编辑:尝试将 session.cache_expire 设置回 180(默认值)

于 2013-05-13T12:17:20.713 回答