chrome 打开页面 http://127.0.0.1:8082
,使用到session
$session = $request->session();
//重新设置ticket
$wechatTicket = $session->get('wechatTicket','');
if (!$wechatTicket){
$wechatTicket = Str::random(40);
$session->set('wechatTicket',$wechatTicket);
}
return "hello";
在chrome 下能正确显示。
但是firfox、Safari 等浏览器打开同一个页面。报错!!!
Request->session() fail, header already send
定位于Workerman\Protocols\Http\Request 第305行 $this->connection === null 成立!
用了swoole?估计是开了swoole协程导致的
在php8.0下,删除cookie的sid就会复现!!
同样的代码在php7.2,复现不出来,只有在php8.0才可以复现。
swoole 在8.0还不支持吧!
不是用swoole,原生的select
有条件可以安装个event扩展试试
是在 php8.0写入cookie可能有问题
是否使用了异步,定时器之类的操作?
执行 php -m 截图下。
Workerman\Protocols\Http\Request 第305行下面加一行代码打印下调用栈,发下调用栈。
已经解决了,并不是workerman的问题。骚操作导致。过度封装导致