PHP 7 用户 session 问题 - 无法初始化存储模块

标签 php codeigniter session fatal-error php-7

在 PHP 7.0 中使用各种 PHP 框架 session 驱动程序时存在错误。我最初在使用 CodeIgniter 数据库驱动程序时遇到了这个问题,并认为这是一个 CodeIgniter 问题,但后来在多个 session 驱动程序和多个框架上遇到了这个问题。在这一点上,我已经安全地得出结论, session 驱动程序的类型是无关紧要的——应用程序似乎是随机崩溃的,日志(我已经尝试过 Apache 和 php-fpm + nginx)填满了以下内容:

PHP Fatal error: session_start(): Failed to initialize storage module: user (path: [whatever I have in my php.ini path])

我使用的驱动程序不使用 php.ini 中设置的值,无论我是否在 php.ini 中将 session.save_handler 设置为文件、redis 等,也不管我设置的路径(Redis 服务器如果 redis ,启用文件的完全可写文件夹)错误发生。除非在框架外的 php 文件中调用 native “session_start()”,否则不应命中此处的路径。此外,在框架外调用“session_start()”也能正常工作……很明显 PHP 可以访问该路径。就好像在某个时候, session 驱动程序变成了框架驱动程序和 php.ini 中设置的任何内容的混合体。错误消息总是有 session.save_handler 的“用户”,所以很明显这不是从 php.ini 中提取的……但路径是。为什么会这样?这是在您体验过之前很难描述的问题之一……并且很难重现,因为即使是数百个 session ,一切似乎都运行良好(直到它突然停止工作)。重新启动 Apache 也不能解决问题 - 这里有很多问题,我最终只是重新启动机器以避免停机。显然,PHP 7 机器现在将退出负载均衡器轮换……但我希望现在能解决问题。

我在自己编译的 PHP 7.0 RC5、RC6 和 RC8 以及 Ubuntu 15.10 Wily (7.0.0-2+deb.sury.org~wily+1) 上的最新 Ondřej Surý PPA 上遇到了这个问题.我在 CodeIgniter 和 Symfony 上遇到过这个问题,无论框架中使用的驱动程序类型(文件、数据库、redis)或 php.ini 中设置的 session.save_handler(同样,这应该是无关紧要的),我都遇到过这个问题在这里,但只是认为应该提及)。我一直在尝试组合并在野外扔东西,这个问题每次都会发生(有时需要 12 多个小时,具体取决于网站的流量)。

感谢您提供的任何帮助!在这一点上,我乐于接受建议并愿意尝试任何事情。

最佳答案

当 session 处理程序的 open() 函数没有返回 bool 值 TRUE 时会发生此错误,这显然意味着某种失败。

可能是无法连接到数据库、无法打开文件、目录不存在等 - 这取决于 session 处理程序实际使用的内容。

关于PHP 7 用户 session 问题 - 无法初始化存储模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125849/

相关文章:

php - MySQL 到 Mongodb 查询问题

javascript - 如何将简单的查询字符串 jQuery 脚本添加到 WordPress

php - 使用循环插入多行时获得成功确认

php - 如何通过使用 MYSQL 和 Codeigniter 来获取删除表时的返回值?

session 类上的 java.lang.NullPointerException

php - 在Docker中安装GD扩展

php - 返回数组中深度未知的变量

php - 如何在codeigniter中上传图片

c# - 如何在这个简单的 asp.net webforms 应用程序中拥有和管理 session 超时?

php - 当我触摸 CWebUser 时,Yii 总是启动一个 session