【问题标题】:Session not working correctly on PHP 7.3 but it works fine in 7.0会话在 PHP 7.3 上不能正常工作,但在 7.0 上工作正常
【发布时间】:2019-12-01 01:36:15
【问题描述】:

我在使用 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 '会话。

但一无所获。

另外,我无权访问日志,因此无法在那里查看。

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

【问题讨论】:

  • 听起来您已经回答了自己的问题,因为 if(isset($_SESSION['myweb-login'])){ 内部没有任何东西在运行。 var_dump($_SESSION) 的输出是什么?
  • 不,var_dump($_SESSION) 为 NULL。
  • 这样可以缩小范围。 var_dump(session_status()) 怎么样?
  • 它返回int (1)。有趣的是,我从index.php 复制了代码,将其复制到另一个文件中,然后它就可以工作了。也许index.php 有一些破坏它的元数据?或者某些属性正在被缓存或其他什么?
  • 也许吧。在 session.php 的 include 语句之后在 index.php 中重复上述所有操作。

标签: php session


【解决方案1】:

检查phpinfo.php中的会话参数

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

自定义 php.ini

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

重新启动 Apache 后,可以再次写入和读取会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2014-12-02
    • 2011-12-21
    • 2017-12-12
    相关资源
    最近更新 更多