会话在PHP 7.3上无法正常工作,但在7.0中可以正常工作

时间:2019-07-14 19:31:13

标签: php session

我在使用PHP的登录系统时遇到麻烦。我有一个名为session.php的文件,该文件包含在另一个名为index.php的PHP文件中。

这是里面的代码:

<?php
    if(session_status() == PHP_SESSION_NONE){
        session_start();
    }

    $user = null;

    include 'user.php';
    include 'connection.php';

    if(isset($_SESSION['myweb-login'])){
        $id = $_SESSION['myweb-login'];

        $stmt = $db->prepare('SELECT id, username, active_token, verified, wants_verification FROM usuarios WHERE id = ?');
        $stmt->execute([$id]);

        $userDb = $stmt->fetch(PDO::FETCH_ASSOC);

        if(!$userDb){
            unset($_SESSION['myweb-login']);
        }else{
            $user = new User($userDb['id'], $userDb['username'], $userDb['active_token'], $userDb['verified'], $userDb['wants_verification']);
        }
    }
?>

在使用XAMPP和PHP 7.3的计算机上,它可以正常工作。如果我也将其上传到使用PHP 7.3的apache服务器中,然后进入index.php;

然后我检查$user的值为NULL

但是,如果我切换到PHP 7.0,它可以正常工作,并且$user现在应该是一个对象。

由于与库的兼容性,我需要使用PHP 7.3。

此外,如果直接转到session.php文件,而不是从另一个文件中包含它,它也可以正常工作(即使在PHP 7.3中也是如此)。

我尝试过:

  • session_start()中的index.php位放在文件开头。

  • 使index.php除了`include'session外什么也没有。

但一无所获。

此外,我无权访问日志,因此无法查看。

我尝试使用var_dumping的东西来查看session.php文件是否一直被调用,直到if(isset($_SESSION['myweb-login'])){行显示东西为止,但是之后什么也没显示。

1 个答案:

答案 0 :(得分:0)

在phpinfo.php中检查会话参数

设置了会话参数“ session.save_path”:\ xampp \ tmp。

自定义php.ini

我已将此路径修改为该目录的真实路径。在我的情况下,“ session.save_path =“ C:\ xampp \ tmp”

重新启动Apache之后,可以编写会话并再次读取。