会话中的对象:致命错误:在第0行的"未知"中没有堆栈帧时抛出异常

rsk*_*k82 3 php session object

session_start();
$_SESSION['dbo'] = NEW PDO('sqlite:database.db3');
Run Code Online (Sandbox Code Playgroud)

得到:

Fatal error: Exception thrown without a stack frame in Unknown on line 0

但把它放到普通变量没有错误.我尝试做的就是将对象放入会话中,以便初始化一次.

Lin*_*een 6

某些对象无法序列化和存储$_SESSION.

如果您的目的是在会话中存储数据库连接以供重用,请不要执行该操作:它不起作用.

序列化的PHP参考:

[...] serialize()处理除resource-type之外的所有类型.您甚至可以序列化()包含对自身的引用的数组.您正在序列化的数组/对象内的循环引用也将被存储.任何其他参考将丢失.

  • @Simon - 你可以添加一个__sleep从数据库断开连接,并重新连接到数据库的__wakeup ....但要记住,你需要__sleep需要从需要被序列化的对象返回属性的完整列表,因此,您必须提取该属性列表,并确保它包含重新连接所需的所有信息...您可能需要使用包装类扩展PDO以保存此附加信息 (2认同)