Linux上的PHP:不记得$ _SESSION变量

时间:2013-04-12 17:51:20

标签: php apache session

我将我的页面从Windows上的EasyPHP移到Linux服务器上,并开发了这个新问题。当我重新加载页面,或点击链接将我带回到会话中应该可访问的那个页面(或另一个页面)时,会话信息将丢失,并且用户已注销。

这段改编自W3的代码片段似乎说明了这个问题:

<?php

//Thing1.php
session_start();
if (! isset ($_SESSION['views'])) $_SESSION['views']='first load';
else $_SESSION['views']='reloaded';
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
<br>
<a href="thing1.php">Reload this page</a>

</body>
</html>

在EasyPHP上,它最初会显示Pageviews=first load,但在刷新或点击返回同一页面的链接后,它会始终显示Pageviews = reloaded

在我的Linux机器上,它始终显示Pageviews=first load。这与我打印$_SESSION数组时的情况一致,该数组始终为空。

Linux框运行PHP 5.3.10-1unbuntu3.6和Apache 2.2; EasyPHP有PHP 5.4.4和Apache 2.4.2。

我想要的是EasyPHP下的行为:对于Linux版本,还要记住$_SESSION个变量。

由于

2 个答案:

答案 0 :(得分:3)

确保在第二页和第一页上调用session_start(),并确保在调用session_start()之前没有HTML或PHP输出(回声,打印等)。

答案 1 :(得分:2)

1)查看您的Cookie以查看是否有一个名为PHPSESSID的Cookie。 2)在php.ini文件中查找session.save_path。转到该路径,看看是否看到文件。

如果其中任何一个不成立,则会话配置出现问题。特别是,确保打开会话 - 您可能必须编辑php.ini并修复session.save_path的目录 - 而不是默认的“/ tmp”使用Windows目录,如“c:/ temp”。