PHP 7.1中session_write_close()返回null与手册标注bool不符问题咨询
为啥session_write_close()返回null而不是手册说的布尔值?
嘿,这个坑我之前踩过!其实核心原因就是PHP版本差异,给你掰扯清楚:
- 如果你用的是PHP 7.2及更早版本:
session_write_close()这个函数根本就没有返回值,调用它自然得到null——这是旧版本的原生行为。 - 从PHP 7.3开始,官方才更新了这个函数,让它返回布尔值:成功写入关闭会话返回
true,失败则返回false,这也是你在当前手册里看到的说明。
估计你是看了最新版的PHP手册,但实际运行环境的PHP版本低于7.3,才出现了手册说明和实际结果对不上的情况。
你可以快速验证自己的PHP版本:
- 命令行里敲
php -v - 或者在代码里加一行
echo PHP_VERSION;
如果确实是版本问题,要么升级PHP到7.3+,要么在封装方法里做个兼容处理,比如:
function wrappedSessionClose() { session_write_close(); // 对低版本模拟返回成功状态,或者根据业务逻辑调整 return version_compare(PHP_VERSION, '7.3.0') >= 0 ? true : true; }
顺便提一句:旧版本的PHP手册里,session_write_close()的返回值明确标注为void(无返回值),你切换到对应版本的手册页就能看到啦。
内容的提问来源于stack exchange,提问作者codekandis
相关产品推荐
相关产品推荐

