我决定更新我的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。
人们出了什么问题。
谢谢你,
亚历
答案 0 :(得分:0)
清除会话目录,打开第1页,检查是否已写入会话文件。如果它还没有,那么请仔细检查您的保存路径(在您的脚本中可能die(session_save_path());
,以100%确定您获得了正确的路径)。您现在也可以尝试将会话保存路径设置为/ tmp,以帮助消除原因。
如果正在写入会话文件,请检查是否正在写入会话cookie。再一次,检查脚本中的会话cookie名称是否确定,并且可能为您的浏览器获取cookie查看器插件(firefox和chrome有很多这些)。同样值得转储$ _COOKIE变量,以便您知道cookie是否正在通过(以防万一发生类似于域内特定路径的奇怪事件)