无法在CakePHP 4中使用setUser在Auth中设置用户

rkkpypqq  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(114)

现成的PHP 4.0
当我尝试执行$this->Auth->setUser($user)时,我收到这个错误:
传递给Cake\Http\Session::_overwrite()的参数1必须是数组类型,并且必须是受保护的函数_overwrite(数组&$old,数组$new):空的
这是我的代码:

$user = $this->Auth->identify();
if ($user) {
    $this->Auth->setUser($user);
}

当我尝试var_dump($user)时,它包含用户详细信息。
请帮助我无法传入数组,因为$user不是数组

iqih9akk

iqih9akk1#

这个问题既不是由先前生成的输出(在我的例子中是一个警告)引起的,也不是由会话的其他错误配置引起的。当你仔细观察Session.php,特别是write()方法时,你会看到这部分代码:

if (!$this->started()) {
      $this->start(); //this may result in false but cakephp ignores it here... 
  }

$this->_overwrite($_SESSION, $data); //will fail for no session_start() has been invoked yet

因此,即使您的会话尚未启动,脚本也会继续处理,这将导致您的错误消息。因此,请检查您是否可以通过此错误消息:

if (ini_get('session.use_cookies') && headers_sent()) {

     //error headers already send
 }

只要不传递它,就无法向会话中写入任何数据

相关问题