Session Wamp64不在页面之间持久化会话,每次页面更改都会生成一个新会话

Session Wamp64不在页面之间持久化会话,每次页面更改都会生成一个新会话,session,configuration,wampserver,Session,Configuration,Wampserver,Wamp64Server3.1.0_x64的重新安装正在Windows 10 Pro 10.0.18362 Build 18362 64位Dell工作站上运行,该工作站位于c:\wamp64,通过LocalHost作为一个封闭的php开发环境运行 c:\wamp64及以下版本中的所有php.ini文件都具有以下会话变量设置。在此开发环境中,我们希望会话变量作为SESS_uu文件存储在c:\wamp\tmp文件夹中,而不是存储在cookie中 [Session] session.save_hand

Wamp64Server3.1.0_x64的重新安装正在Windows 10 Pro 10.0.18362 Build 18362 64位Dell工作站上运行,该工作站位于c:\wamp64,通过LocalHost作为一个封闭的php开发环境运行

c:\wamp64及以下版本中的所有php.ini文件都具有以下会话变量设置。在此开发环境中,我们希望会话变量作为SESS_uu文件存储在c:\wamp\tmp文件夹中,而不是存储在cookie中

[Session]
session.save_handler = files
session.save_path ="c:\wamp64\tmp" 
;(Note: if this is specified as c:/wamp64/tmp, Apache generates "can't find folder" errors.)
session.use_strict_mode = 0
session.use_cookies = 0 
;(Note: Presumably setting use_cookies to 0 causes all cookie-related variables to be ignored.)
session.use_only_cookies = 0
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
两个php文件test1.php和test2.php位于c:\wamp64\www\testsession文件夹中:

<?php session_start(); ?>
<!doctype html>
<html lang="en">
<head>
  <title>Session Test Page 1</title>
</head>
<body>
<?php 
 echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
$_SESSION['page'] = 'Page 1';
echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
?>
<form action="page2.php">
                <input type="submit" value="Page 2">
</form>
</body>
</html>
单击第2页提交按钮时,会立即在c:\wamp64\tmp中创建一个sess_bbf1umlcfkhr6cbf5038isqev4文件,并在同一浏览器选项卡的屏幕上显示以下输出(未打开单独的选项卡):

请注意,显示第二个页面时的会话id与第一个页面的会话id不同,并且$session数组在应该向其传递数组([page]=>page 1)时最初为空。显然,数组是空的,因为第二个页面运行的会话与第一个页面不同。换句话说,第一页的会话不会持久化到第二页。sess文件包含set
$\u SESSION['page']
值,假设在两个页面上都单击了提交按钮

这种行为在多个浏览器中都会发生:Chrome、Edge、Internet Explorer、Firefox、Avast Secure Browser

从上面的代码中可以看出,
作为第一行,在两个php文件中都被虔诚地使用。我在无数的论坛帖子中搜索到,坚持认为忽略这个或者把它放错地方才是问题所在。在只有一篇这样的帖子中,解决方案是让托管服务的支持团队进行配置更改,但下一篇评论只是简单地说,“如果知道他们更改了什么,那就太好了。”的确

因为这个问题与浏览器无关,在重新安装Wamp64之后,php代码非常简单,所以我确信这是Wamp的php模块或Apache模块中的配置问题。但我找不到任何可能导致此行为的设置的引用。以前安装的Wamp(我在本地主机开发环境和实时网站上都使用过很多Wamp)从未出现过这个问题。我不愿意卸载WampServer并重新安装,除非绝对必要,因为需要跟踪安装中分散的php.ini和其他配置文件,以确保许多设置适合我的环境。谢天谢地,这不是发生在一个实时网站上


我怀疑这是php或Apache中的配置问题。我被难住了。任何建议都将不胜感激。

此行为是使用安装的默认PHP版本5.6.31的结果。打开管理弹出窗口,将鼠标悬停在PHP选项上,然后悬停在version选项上,然后单击7.1.9选项,切换到7.1.9版本。更改后,服务器将自动重新启动。

此行为是使用安装的默认PHP版本5.6.31的结果。打开管理弹出窗口,将鼠标悬停在PHP选项上,然后悬停在version选项上,然后单击7.1.9选项,切换到7.1.9版本。更改完成后,服务器将自动重新启动。

可以在实时网站中查看上述页面,这些页面的行为与预期一致。Wamp64Server3.1.0_x64包包含三个版本的PHP,即5.6.31、7.0.23和7.1.9。安装时的默认版本为5.6.31。切换到7.1.9解决了问题。(恢复相关网站的原始开发环境需要此Wamp64Server的备份版本。)可以在实时网站中查看上述页面,这些页面的行为符合预期。Wamp64Server3.1.0_x64包包含三个版本的PHP,即5.6.31、7.0.23和7.1.9。安装时的默认版本为5.6.31。切换到7.1.9解决了问题。(需要此Wamp64Server的备份版本来恢复相关网站的原始开发环境。)
<?php session_start(); ?>
<!doctype html>
<html lang="en">
<head>
  <title>Session Test Page 2</title>
</head>
<body>
<?php 
 echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
$_SESSION['page'] = 'Page 2';
echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
?>
<form action="page1.php">
                <input type="submit" value="Page 1">
</form>
</body>
</html>
7dmdo58tq30mh2bf7712vecrk2

Array ( )

7dmdo58tq30mh2bf7712vecrk2

Array ( [page] => Page 1 )
bbf1umlcfkhr6cbf5038isqev4

Array ( )

bbf1umlcfkhr6cbf5038isqev4

Array ( [page] => Page 2 )