Codeigniter 3 会话不适用于 PHP 7.1.4

Posted

技术标签:

【中文标题】Codeigniter 3 会话不适用于 PHP 7.1.4【英文标题】:Codeigniter 3 Session not working With PHP 7.1.4 【发布时间】:2017-09-28 20:38:29 【问题描述】:

我有一个使用 Codeigniter 3 HMVC 构建的应用程序。该应用程序在 php 5.6 版本上运行良好,但是在将我的 PHP 版本升级到 7.1.4 后,我无法登录到我的应用程序。经过全面检查后,我发现会话根本没有设置。

我的角色回到 PHP 5.6 并且会话再次正常工作,而切换到 PHP 7.1.4 带来了“会话不工作”问题。

我尝试更改一些配置值,例如 cookie 前缀和 cookie 保存名称等,但似乎没有任何解决方法。

谁能帮忙。

【问题讨论】:

请阅读How to 和provide an MCVE : Minimal, Complete, and Verifiable Example。 这是重现您的问题所必需的,这是您学习如何自己查找和解决问题的最有用的方法。 问题不在于我的个人代码……而是关于开源框架。你想让我把codeigniter 3的整个代码贴在这里吗?任何知道 codeigniter 的人都已经有了代码。 这不是我忘记自动加载或手动加载会话库的基本问题,这可能是CI 3中的一个错误。 你怎么知道问题的根源不在应用程序代码中? 这就是“它可能发生”的重点。您应该自己对此进行测试,然后,当您确定它不取决于您的应用时,请来这里提出一个问题( 以及更多有用的信息)。尽管我认为直接向项目维护人员询问会更好。 【参考方案1】:

我发现问题出在一些早期版本的 Codeigniter 3 上,这是他们网站上已经报告的错误。基础会话错误已修复:

3.1.2 3.1.3 3.1.4

所以在最新版本的 Codeigniter 3 中这个问题不会发生。

解决方案:

如果您已经使用了错误版本的 codeigniter,请考虑将系统文件夹替换为 最新 版本的文件夹。撰写本文时的版本为 3.1.6。

【讨论】:

CI 3.1.9 和 PHp 7.2.34 有同样的问题【参考方案2】:

在 XAMPP(windows) 上的 codeigniter 3.1.9 和 PHP 7.2 中,我检查了我的 application/config/config.php 并看到 sess_driver 是数据库:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = '165_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = "ci_sessions";

所以我创建了数据库 ci_sessions:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

它奏效了。

【讨论】:

以上是关于Codeigniter 3 会话不适用于 PHP 7.1.4的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 3,适用于“http”但不适用于“https”

Codeigniter 4 不适用于带有 PHP 8.0 的 xampp

Codeigniter 删除 index.php 在本地工作,但不适用于 aws ELB

mPDF 库不适用于 php7.2 codeigniter

动态 PHP 变量不适用于使用 mPDF 的 codeigniter php 视图文件

cron 作业不适用于 codeigniter 2.2.5