【问题标题】:PHP session doesn't persist on new serverPHP会话不会在新服务器上持续存在
【发布时间】:2016-01-26 10:54:55
【问题描述】:

首先,我确实阅读了至少 10 个类似名称的问题和答案,但没有解决问题。

我有一个有效的基于 AJAX 的登录脚本,但现在我已将整个网站复制粘贴到新主机,它不起作用。

过程很简单。

Javascript 将登录数据发送到 ajax.php,发生这种情况:

session_start();

//check database

$_SESSION['isloggedin']=1;
//if I var_dump($_SESSION) here, it prints out `array{'isloggedin' => 1}`

echo "ok";

然后Javascript重定向到index.php,目前是:

session_start();
var_dump($_SESSION);

但是在这里,$_SESSION 是一个空数组!

如果我在两个页面上都使用echo session_id();,它会打印出相同的值。

这可能是什么问题?

请记住,它可以在不同的服务器上完美运行。

【问题讨论】:

  • 您是否过早使用exitdie?这有时会导致会话无法持久化。
  • 两个文件中的任何地方都没有退出或死亡。
  • 在两台服务器上显示 PHP 的版本,"session.*" ini 选项也会有所帮助。
  • 旧服务器是 5.5.29,新服务器是 5.3.3 - 但基本会话功能肯定应该相同吗?这是一个带有会话的 pastebin。* 两台服务器的 php.ini 设置:pastebin.com/jM27JDdx

标签: php ajax session


【解决方案1】:

您是否尝试过通过在浏览器中重新加载一页来进行基本会话增量测试?例如:

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>

有效吗?

如果您将会话数据存储在文件中(默认 PHP 配置): 您可以访问存储会话文件的文件夹吗?会话文件中是否存储了任何分配给您的会话的内容?

【讨论】:

  • 不,每次重新加载时计数器都是 0。
  • 尝试运行上传并运行phpinfo() 以查看服务器上的会话配置。更多信息phpinfo 如果您使用默认的 PHP 会话配置,请尝试检查 session.save_path 设置more - 这是否存在于您的配置中?它是否指向有效目录? PHP 可以写入那个目录吗?
  • 正如我从上面的线程中看到的,请检查文件夹/var/lib/php/session 是否存在以及它是否可以被用于运行 PHP 的用户写入。顺便说一句,您是否尝试将 error_reporting(E_ALL);ini_set('display_errors', 1); 添加到您的测试脚本中 - 任何具有此设置的新消息?
【解决方案2】:

第一件事是你必须在哪个页面使用 session 你必须写 第一行是 session_start() 好吗?

请试试这个我希望你的问题解决

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多