PHP 7.2警告: “Cannot change session name when session is active”[通俗易懂]

PHP 7.2警告: “Cannot change session name when session is active”

大家好,又见面了,我是全栈君。

项目在php7.1 版本正常,迁移服务器php 7.2 报错

Maybe it’s a warning but with Tracy I have an error.

To solve this I put session_write_close(); before session_set_cookie_params();. It’s not a good fix but it’s works

PHP 7.2警告: “Cannot change session name when session is active”[通俗易懂] 

session_name() as well as session_set_cookie_params() are always nonesense if the session is already running.

翻译: session_name()以及session_set_cookie_params()总是不存在意义的,如果会话已在运行。

 

I had a similar problem but finally found a way through. The code below was my first approach that gave me errors.

static function startmysession($lifetime, $path, $domain, $secure, $httponly){

    session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly);
    session_regenerate_id(true);

    if(!isset($_SESSION)){
        session_start();
    }
}

Now Earlier versions of php overlooked our mistake(We were practically renaming and giving a session that already exists properties which is very wrong. So how did i solve this problem?(现在php的早期版本忽略了我们的错误(我们实际上是在重命名和提供一个已经存在的会话属性,这是非常错误的)。那么我是如何解决这个问题的呢?)

static function startmysession($lifetime, $path, $domain, $secure, $httponly){      
    if(!isset($_SESSION)){  
         session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly);
         @session_regenerate_id(true);    
             session_start();
         }    
    }

I now bound the session_set_cookie_params() just before session start and I test if the session already exists before doing so.(现在,我在会话开始之前绑定了会话session_set_cookie_params(),并在此之前测试会话是否已经存在。)

My solution:

Originally:

        $cookieParams = session_get_cookie_params();

        session_set_cookie_params(
            $seconds,
            $cookieParams['path'],
            $cookieParams['domain'],
            $cookieParams['secure']
            );

Now:

        if(isset($_SESSION)) {
            if ($seconds != 0) {
                setcookie(session_name(), session_id(), time() + $seconds);
            } else {
                setcookie(session_name(), session_id(), $seconds);
            }
        } else {
            $cookieParams = session_get_cookie_params();

            session_set_cookie_params(
                $seconds,
                $cookieParams['path'],
                $cookieParams['domain'],
                $cookieParams['secure']
            );
        }

 

参考:https://stackoverflow.com/questions/47700336/php-7-2-warning-cannot-change-session-name-when-session-is-active

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111572.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 基于LM331的电压-频率转换电路详细介绍[通俗易懂]

    基于LM331的电压-频率转换电路详细介绍[通俗易懂]目录1.LM331简介2.引脚分布与功能3.LM331的功能框图4.V/F转换的工作原理5.LM331的V/F转换电路1.LM331简介LM331是由美国NS公司(已被TI公司收购)生产的高精度频率-电压转换芯片,可以用于AD转换、频率-电压转换、电压-频率转换和转速测量等。当用作频率-电压转换时输出频率与输入电压成正比例关系,线性失真最大为0.01%。动态范围广,最大可达100dB;温度稳定性高,温度系数为±50ppm/℃;工作范围广(1Hz-100kHz);外.

  • springboot多环境配置文件_Springboot教程

    springboot多环境配置文件_Springboot教程第一步:三个配置文件,分别是默认配置application.yaml、开发配置application-dev.yaml、生产配置application-pro.yaml第二步:SpringBoot默认加载的是application.yaml,想要默认加载其他配置文件,需要在application.yaml中配置:这样加载的就是生产环境的配置了,打包打的也是application-pro.yaml文件。本地开发的时候也是加载的pro文件。第三步:想要打包的时候用pro文件,IDE开发的时候用的

  • 网卡bonding模式 – bond0、1、4配置

    网卡bonding简介网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度,还可以实现网卡的负载均衡、冗余。bonding模式1    round-robin(mode=0)轮转策略,轮流在每一个slave网卡上发送数据包,提供负载均衡和容错能力。     

  • mac. navicate 15激活码【2021免费激活】

    (mac. navicate 15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 讲讲springboot_@SpringBootApplication

    讲讲springboot_@SpringBootApplication作为一个java程序员,如果你还不知道springboot,那你一定是落后了。1.什么是springbootSpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidappli

  • Dropout[通俗易懂]

    Dropout[通俗易懂]参数正则化方法Dropout受人类繁衍后代时男女各一半基因进行组合产生下一代的启发,论文("Dropout:ASimpleWaytoPreventNeuralNetwor

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号