1

我将我的页面从 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变量。

谢谢

4

2 回答 2

3

确保session_start()在第 2 页和第 1 页上都调用了它,并确保在调用之前没有 HTML 或 PHP 输出(回显、打印等)session_start()

于 2013-04-12T17:56:46.073 回答
2

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

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

于 2013-04-12T18:52:08.230 回答