PHP $ _SESSION不通过页面共享

时间:2014-06-12 09:48:03

标签: php session-variables

我决定更新我的Synology服务器。此更新包括最新的PHP版本。在我能够使用session_register()和session_is_registered()函数之前。不推荐使用这些函数,因此我使用$ _SESSION []重构了代码。但问题是我无法在另一页上阅读会话。

Page 1

<?
session_start();

$_SESSION['page1'] = "page1session";

//Check if page2 is set on other page
if (isset($_SESSION['page2'])) {
   echo "Received the session from page 2";
} else {
   echo "No session info from other page";
}

//Dump all session info:
var_dump($_SESSION);

第2页

<?
session_start();

$_SESSION['page2'] = "page2session";

//Check if page2 is set on other page
if (isset($_SESSION['page1'])) {
   echo "Received the session from page 1";
} else {
   echo "No session info from other page";
}

//Dump all session info:
var_dump($_SESSION);

因此,我认为会话无法写入(由于写权限)php.ini中的session.save_path路径。此路径设置为/ var / services / tmp,并在运行php_info()时列为session.save_path;因此,我认为更新将此新路径设置为新的会话路径,并且该文件夹没有全局读/写权限。因此,我使用SSH登录并运行以下代码以递归方式设置权限

chmod -R 777 /var/services/tmp

设置权限后,我重新启动了apache服务。

不幸的是,我仍然无法在另一个页面上保存或打开会话。

第1页的

var_dump返回page1 =&gt; page1session,第2页没有会话信息。页面到输出page2 =&gt; page2session。

人们出了什么问题。

谢谢你,

亚历

1 个答案:

答案 0 :(得分:0)

  1. 清除会话目录,打开第1页,检查是否已写入会话文件。如果它还没有,那么请仔细检查您的保存路径(在您的脚本中可能die(session_save_path());,以100%确定您获得了正确的路径)。您现在也可以尝试将会话保存路径设置为/ tmp,以帮助消除原因。

  2. 如果正在写入会话文件,请检查是否正在写入会话cookie。再一次,检查脚本中的会话cookie名称是否确定,并且可能为您的浏览器获取cookie查看器插件(firefox和chrome有很多这些)。同样值得转储$ _COOKIE变量,以便您知道cookie是否正在通过(以防万一发生类似于域内特定路径的奇怪事件)