PHP $ _SESSION参数是否由服务器重置?

问题描述

我创建了一个非常基本脚本来测试$_SESSION参数,并且在我的服务器上,该脚本运行良好:

<?PHP
session_start();

if(!isset($_SESSION["favcolor"]))
{
  $_SESSION["favcolor"] = "green";
}
?>

<html>
<head>
</head>
<body>
<?PHP
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>

<br /><br />
<a href="test2.PHP">Go To Next Page</a>
<br />
<a href="kill.PHP">Delete Session</a>
</body>
</html>

第2页完全相同,仅使用第二个Session变量,并且kill链接执行session_unset()session_destroy(),然后重定向 test1 .PHP 。同样,在 my 服务器上,此代码可以完美运行。

但是,我的客户端服务器上的 exact 完全相同的代码(简单地复制并粘贴,没有任何更改)不能正常工作。在 test.PHP test2.PHP 之间,在 test1.PHP 中设置的会话变量会丢失。同样,回过头来看,第2页中设置的变量丢失了。

我一直在看PHPinfo()的东西,看看是否有明显的差异,但是我在这里茫然不知所措...

解决方法

这可能是由很多原因引起的,但只是为了开始进行故障排除:

此函数返回TrueFalse,具体取决于它是否可以启动会话,因此也许您可以打印此返回值,以检查它是否确实为您保存了该值

否则,您肯定会遇到php.ini配置问题,并且必须在客户端服务器上检查these values

您可以在php的official site上查看session_start()的文档

,

这是由于session.save_path配置错误所致。

将其指向正确的文件夹后,一切运行正常