2016-09-22 84 views
0

我在我的应用程序中实现SessionHandler类时遇到了很大的问题。没有找到类'SessionHandler'PHP 5.3.3

不幸的是,我卡在5.3.3版本,我无法升级到更新的版本,因为我们的服务器必须使用该版本。

有没有其他解决方案来实现SessionHandler类?

通过查看文档,SessionHandler需要最小5.4版本。

谢谢。

回答

1

对,SessionHandler接口直到PHP 5.4才在PHP中实现。不幸的是,2年前的PHP 5.3 reached its end of life。如果您现在正在使用PHP 5.6.0之前的任何内容,那么您正在使用不再接收更新或支持的PHP版本。因此,您将无法利用PHP的新版本和当前版本所提供的新功能。

SessionHandler接口是暴露给用户级PHP的唯一接口,允许您直接挂接PHP的会话处理程序。在此之前,您必须将自己的自定义会话处理代码编写为C扩展名,将其注册为PHP将用于处理会话的session_save_handler之一。

由于您没有直接的界面,所以您不得不在您不受支持的PHP版本中临时执行这种类型的事情。即直接从会话存储读取,手动反序列化,编写自己的包装,然后序列化并写回到存储位置。

这意味着你将无法利用任何的PHP的内置功能依赖于这样做,如session_start()session_write_close(),或$_SESSION超级全局变量。您必须将所有这些东西包装在您自己的PHP代码中,并且将被迫在您的应用程序代码中调用自己的PHP抽象来处理会话调用。

+0

嗨。那么对我来说唯一的解决方案就是避免SessionHandler? – fugitive

+0

我不知道如何避免一些不存在的东西,但是你肯定无法使用'SessionHandler'接口。虽然这不是一个解决方案。这是不利的。解决方案是编写自己的自定义会话包装器,然后调用它。 – Sherif