未存储会话数据
Session data not being stored
首先,我知道这个问题已经以各种方式被问过很多次了。我在 SO 上阅读了很多关于此的主题,到目前为止 none 其中有帮助。也许我错过了正确的,如果是的话我很抱歉。
好的,这应该是一个非常简单的测试吧?这是我的整个页面(将 ?ss
添加到查询字符串实际上是这两页):
session_start();
if ( isset( $_REQUEST["ss"] ) ) {
// we're starting the session
$_SESSION["test"] = "1";
} else {
var_dump( $_SESSION ); // seriously, test should be set now
}
不幸的是,var dump 揭示了这一点:
array(0) { }
这看起来很可笑。我在 chrome 中的不同浏览器选项卡中打开了此页面的两个版本,并检查了每个选项卡中的 PHPSESSID cookie 的值,它匹配。在第一个选项卡上,我加载了页面的 ?ss
版本,它应该会启动会话并设置 "test" 变量。在下一个选项卡上,我删除了 ?ss
,它应该恢复会话并且应该保留 "test" 变量。
我到底错过了什么?
当 $_REQUEST['ss'] 未设置时,您正在打印 $_SESSION。应该是:
<?php
session_start();
if ( isset( $_REQUEST["ss"] ) ) {
// we're starting the session
$_SESSION["test"] = "1";
var_dump( $_SESSION ); // seriously, test should be set now
} else {
echo "$_REQUEST['ss'] not set";
}
?>
@Fred-ii- Yea definitely, please add that as an answer and I'll select it, I'm sure it'll help someone else one day.
根据 OP 的要求:(评论回答)
检查是否为要写入的文件夹设置了适当的权限。
确保您可以写入该文件夹以及系统文件中的会话路径。
- 肯定是权限问题。
我的一位房东让我创建一个自定义 php.ini
文件并将其放在一个特殊文件夹中;它只会覆盖您添加的设置,而不会覆盖已设置的其他设置。
- 看看他们是否会让你也这样做。
这是 OP 添加 error reporting 后的问题,给出以下警告:
Warning: session_start(): open(/var/lib/php/session/sess_idfdgs6bmsr3oh1c3hasdutic0, O_RDWR) failed: Permission denied (13)
首先,我知道这个问题已经以各种方式被问过很多次了。我在 SO 上阅读了很多关于此的主题,到目前为止 none 其中有帮助。也许我错过了正确的,如果是的话我很抱歉。
好的,这应该是一个非常简单的测试吧?这是我的整个页面(将 ?ss
添加到查询字符串实际上是这两页):
session_start();
if ( isset( $_REQUEST["ss"] ) ) {
// we're starting the session
$_SESSION["test"] = "1";
} else {
var_dump( $_SESSION ); // seriously, test should be set now
}
不幸的是,var dump 揭示了这一点:
array(0) { }
这看起来很可笑。我在 chrome 中的不同浏览器选项卡中打开了此页面的两个版本,并检查了每个选项卡中的 PHPSESSID cookie 的值,它匹配。在第一个选项卡上,我加载了页面的 ?ss
版本,它应该会启动会话并设置 "test" 变量。在下一个选项卡上,我删除了 ?ss
,它应该恢复会话并且应该保留 "test" 变量。
我到底错过了什么?
当 $_REQUEST['ss'] 未设置时,您正在打印 $_SESSION。应该是:
<?php
session_start();
if ( isset( $_REQUEST["ss"] ) ) {
// we're starting the session
$_SESSION["test"] = "1";
var_dump( $_SESSION ); // seriously, test should be set now
} else {
echo "$_REQUEST['ss'] not set";
}
?>
@Fred-ii- Yea definitely, please add that as an answer and I'll select it, I'm sure it'll help someone else one day.
根据 OP 的要求:(评论回答)
检查是否为要写入的文件夹设置了适当的权限。
确保您可以写入该文件夹以及系统文件中的会话路径。
- 肯定是权限问题。
我的一位房东让我创建一个自定义 php.ini
文件并将其放在一个特殊文件夹中;它只会覆盖您添加的设置,而不会覆盖已设置的其他设置。
- 看看他们是否会让你也这样做。
这是 OP 添加 error reporting 后的问题,给出以下警告:
Warning: session_start(): open(/var/lib/php/session/sess_idfdgs6bmsr3oh1c3hasdutic0, O_RDWR) failed: Permission denied (13)