php会话未存储在Chrome中

wz1wpwve  于 2024-01-04  发布在  Go
关注(0)|答案(6)|浏览(168)

我已经有一段时间没有使用php了,回到我的一个项目中,发现session变量没有被存储。这让我很惊讶,因为上次我检查的时候,它工作了,我没有使用php(因此没有改变代码或配置)。
情况如下:会话不是跨页面存储的(我可以保存它,它在页面上显示相同,但当我刷新-没有任何变化)。
我看了PHP Session data not being saved并复制了这个例子:

  1. <?php
  2. session_start();
  3. if(isset($_SESSION['views']))
  4. $_SESSION['views'] = $_SESSION['views']+ 1;
  5. else
  6. $_SESSION['views'] = 1;
  7. echo "views = ". $_SESSION['views'];
  8. echo '<p><a href="page1.php">Refresh</a></p>';

字符串
但没有什么变化:我仍然有视图= 1。
尽管如此,我没有改变我的配置,但我仍然看了phpinfo():x1c 0d1x
我检查了我的权限写入文件夹/tmp -他们是好的,而且每次刷新后,一个新的文件出现在那里。
然后我在其他浏览器中检查了这项工作:令我惊讶的是,它在firefox中也能工作:数字正确地增加了。
所以情况是:在Chrome中不起作用,在Firefox中起作用。我默认使用Chrome。我还记得当它切换到 Flink 时玩Chrome选项,但据我所知我把所有东西都改回来了。
有什么办法可以修复Chrome中的PHP会话?
附注:

  • 在Chrome中启用cookie
  • 会话文件在/tmp中,我试图将其全部删除,稍后当我在Chrome中刷新页面时-出现新文件
  • 在标头中,我发送Cookie:PHPSESSID=mystring但没有会话ID
l2osamch

l2osamch1#

这是Chromium. Issue 114877中的已知问题
在根文件夹中放置一个favicon,这应该可以纠正您的问题。

6xfqseft

6xfqseft2#

我曾经在不同的浏览器上使用php会话时遇到过一些边界情况。
如果在echo语句之前使用session_write_close(),您能否确认代码示例是否正常工作?
另外,你应该考虑将你的会话保存到另一个存储中,而不是保存到tmp文件夹中的默认文件中。Memcache,redis,数据库都是可以扩展的选项。

p4rjhz4m

p4rjhz4m3#

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

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

ukxgm1gy

ukxgm1gy4#

尝试使用前缀;php.ini中注解session.save_path = "/tmp"指令。
因此,重新启动apache后,phpinfo()应显示session_save_pathno value

mdfafbf1

mdfafbf15#

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

gt0wga4j

gt0wga4j6#

我修复它的方法是,从域名中删除www:

  1. session_set_cookie_params([
  2. 'lifetime' => (365 * 24 * 60 * 60),
  3. 'path' => '/',
  4. 'domain' => 'demo.com',
  5. 'secure' => true,
  6. 'httponly' => true,
  7. 'samesite' => 'Strict',
  8. ]);

字符串
在那之后,

相关问题