PHP 会话在版本 7.3.1 上未传送到其他页面,但在 7.4 上工作

问题描述 投票:0回答:0

我试图让会话保存它变量并在 IIS 服务器(FAST CGI)上的服务器 php 版本 7.3.1 上运行的下一页上使用它,它在我的机器上使用 php 7.4 工作正常。无论是使用 Apche 还是 IIS,系统都可以正常工作。我无法访问服务器端的 php.ini

我试过的。

  1. 将 session_save_path 更改为其他文件夹
  2. setup cookies secure 和 session secure 为 0 或 1
  3. 尝试命名会话,以免发生冲突。
  4. 其他方法如var_dumping session检查会话状态等
if (session_id() == '' || !isset($_SESSION) || session_status() === PHP_SESSION_NONE) {
    // session isn't started
    session_start();
    if (isset($_SESSION['session_id'])) {
        $session_id = $_SESSION['session_id'];
        $page = $_SERVER['REQUEST_URI'];
        $user_id = $_SESSION['username'];

        $sql = "SELECT COUNT(*) AS page_count FROM mst_log WHERE session_id = ? AND page = ?;";
        $params = array($session_id, $page);

        $stmt = sqlsrv_query($conn, $sql, $params);
        if ($stmt === false) {
            die(print_r(sqlsrv_errors(), true));
        }

        $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
        $page_count = $row['page_count'];

        if ($page_count > 0) {
            // Update existing record
            $sql = "UPDATE mst_log SET timestamp = GETDATE() WHERE session_id = ? AND page = ?;";
            $params = array($session_id, $page);
        } else {
            // Insert new record
            $sql = "INSERT INTO mst_log (session_id, user_id, page, timestamp) VALUES (?, ?, ?, GETDATE());";
            $params = array($session_id, $user_id, $page);
        }

        $stmt = sqlsrv_query($conn, $sql, $params);
        if ($stmt === false) {
            die(print_r(sqlsrv_errors(), true));
        }

    }
} 
php apache session fastcgi
© www.soinside.com 2019 - 2024. All rights reserved.