我已经有一段时间没有使用php了,回到我的一个项目只是为了找出会话变量没有存储。它出乎意料,因为我最后一次检查,它工作,我没有使用PHP(因此没有更改代码或配置)。
情况如下:会话不存储在页面中(我可以保存它并在页面上显示相同的内容,但是当我刷新时 - 没有任何变化)。
我看了PHP Session data not being saved并复制了这个例子:
<?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会话吗?
P.S:
答案 0 :(得分:2)
这是Chromium中的一个已知问题。 Issue 114877
将一个favicon放在根文件夹中,这应该可以解决您的问题。
答案 1 :(得分:0)
启用Cookie并退出Chrome中的隐身(隐私浏览)。
编辑:尝试将session.cache_expire设置回180(默认值)
答案 2 :(得分:0)
在使用不同浏览器的php会话时,我常常遇到一些边界情况。
如果在echo
声明之前使用session_write_close(),您是否可以确认代码示例是否有效?
另外,您应该考虑将会话保存到另一个存储而不是默认 - 在tmp文件夹中的文件中。 Memcache,redis,数据库都是可扩展的选项。
答案 3 :(得分:0)
尝试使用前缀session.save_path = "/tmp"
在php.ini
中评论;
指令。
因此,重新启动apache
后,phpinfo()
应为no value
显示session_save_path
答案 4 :(得分:0)
请在php.ini中查看会话使用cookie。如果为零则将其激活为1 session.use_cookies = 1