【问题标题】:PHP Warning: session_set_save_handler(): Cannot change save handler when session is activePHP 警告:session_set_save_handler():会话处于活动状态时无法更改保存处理程序
【发布时间】:2019-10-15 07:07:34
【问题描述】:

当我使用 xdebug 时,我的源 Yii 有这个问题。我不知道为什么。

【问题讨论】:

标签: php yii xdebug


【解决方案1】:

看起来你在 PHP 7.2 中使用 Yii 1 根据this postthis onethis one 等其他来源的数量,您有一个可以报告here 的yii 错误

另一个话题的答案:

我在 php.net 上做了一个错误报告,他们解释说这是 不是错误。是的,在 PHP 7.2 中现在会生成警告。然而这 从来没有按预期工作,它只是默默地失败了。

要创建多个会话,需要使用 session_id()。 看看这个相关的问题: PHP How can I create multiple 会议?

session_name() 和 session_set_cookie_params() 总是 如果会话已在运行,则无意义。

对于原始答案,请看这里: https://bugs.php.net/bug.php?id=75650&thanks=2

【讨论】:

    【解决方案2】:

    简单修复:

    function _read($id)  
       PHP 7.0 -> if is empty return false
       PHP 7.2 -> if is empty return ''
    

    然后将@添加到其他函数并记住在会话开始之前运行 session_name

    @session_name('SOMEID');
    @session_start(...
    ...
    @session_set_save_handler(...
    

    【讨论】:

      【解决方案3】:

      这对我有用:

      1. protected/components 文件夹中创建新类SomeSession
      class SomeSession extends CCacheHttpSession
      {
          public function open()
          {
      // don't start new session if session is started now
          if (session_status() === PHP_SESSION_NONE) 
          {
                 parent::open();
          }
      }
      
      1. main.phpsession 部分编辑:
      'session'      => [
                  'class'       => SomeSession::class,
                  'sessionName' => 'SomeSessionName',
                  'autoStart'   => true,
                  'cookieMode'  => 'allow',
              ]
      
      1. 完成 =]

      【讨论】:

        猜你喜欢
        • 2018-05-21
        • 2012-11-19
        • 2020-07-14
        • 1970-01-01
        • 2021-10-21
        • 2015-05-21
        • 2019-11-07
        • 2012-11-12
        • 1970-01-01
        相关资源
        最近更新 更多