CodeIgniter 3.x 官方变更日志深度解读:从 3.2.0 到 1.0 的演进路线与源码印证

发布时间:2026/9/21 18:14:19

CodeIgniter 3.x 官方变更日志深度解读:从 3.2.0 到 1.0 的演进路线与源码印证 CodeIgniter 3.x 官方变更日志深度解读从 3.2.0 到 1.0 的演进路线与源码印证【免费下载链接】CodeIgniterOpen Source PHP Framework (originally from EllisLab)项目地址: https://gitcode.com/gh_mirrors/co/CodeIgniter导读本文以官方 changelog.rst共 3890 行为骨架系统梳理 CodeIgniter 3.x 自 3.2.0 至 3.0.0、以及 2.x/1.x 时代的关键变更脉络。你将掌握3.x 主线版本中哪些配置项被新增、废弃或移除如$config[log_file]、cookie_samesite等、Session/Cache/Query Builder 等核心组件的演进方向、以及每一条重要变更在 system/ 与 application/config/ 源码中的真实落点从而在升级、排查与二次开发时拥有完整的版本视野。一、版本总览这份 Change Log 记录了什么这份文档按时间倒序记录了 CodeIgniter 从 3.2.0Not Released一路回溯到 Beta 1.02006 年 2 月 28 日首发的完整版本历史结构统一为「版本号 发布日期 变更清单Security / General Changes / Core / Libraries / Database / Helpers 分类 Bug fixes」。值得注意的关键节点包括3.2.0未发布版本集中清理历史废弃 API属于一次大规模减负。3.1.13 / 3.1.122022-03-03PHP 8.0/8.1 兼容性与 session 安全修复。3.1.02016-07-26正式放弃 PHP 5.2.x全面转向现代 PHP。3.0.02015-03-30MIT 重新授权、Active Record 更名 Query Builder、Session 库重写是 3.x 的奠基版本。二、3.2.0一次彻底的历史债务清理2.1 运行环境与核心配置的收口彻底放弃 PHP 5.4.8 以下的一切支持。结合 3.1.0 已放弃 PHP 5.2.x、3.0.0 要求 PHP 5.2.4 的脉络可以看到 CI 3.x 对最低 PHP 版本的阶梯式抬升。更新了 Welcome 视图与 HTML 错误模板的新样式对应 application/views/welcome_message.php 与 application/views/errors/html/ 下的模板。可配置目录路径现在会自动补全缺失的尾部DIRECTORY_SEPARATOR避免拼接路径时的双分隔符问题。公共函数set_status_header()新增 103、207、308、421、451 五个 HTTP 状态码定义于 system/core/Common.php对应 IETF 新 RFC 中的 WebDAV、Misdirected Request、Unavailable For Legal Reasons 等场景。2.2 Core 层变更新增$config[log_file]移除$config[log_file_extension]日志文件现在可显式指定文件名。当前仓库 application/config/config.php 中对应的配置项为$config[log_filename]注释说明留空则使用默认log-.date(Y-m-d)..php。移除$config[rewrite_short_tags]PHP 5.4 下?恒可用、移除废弃的$config[global_xss_filtering]。移除 Router 类废弃方法fetch_directory()/fetch_class()/fetch_method()改用类属性访问。移除 Config 库的system_url()方法。URI 库在 CLI 请求下不再应用$config[url_suffix]与$config[permitted_uri_chars]——CLI 场景下这两个限制无意义。Loader 的model()现在总是校验加载的类是否继承自CI_Modelsystem/core/Model.php 定义了该基类。Output 库_display()默认参数由空字符串改为NULL。2.3 Input 库的收编移除$config[allow_get_array]与$config[standardize_newlines]。移除废弃方法is_cli_request()统一改用公共函数is_cli()。set_cookie()默认过期时间改为 0浏览器关闭即失效且传入负值会直接删除 cookie。get_post()/post_get()现在支持嵌套数组键名。2.4 Libraries 层变更移除长期废弃的 Encrypt、Cart、Javascript 三个库Pagination 移除anchor_class选项。Session 库 redis 驱动新增TLS 与 UNIX socket 连接支持。ZIP 库read_dir()现在包含隐藏点前缀文件。Cache 库是本版改动最集中的模块当前仓库 system/libraries/Cache/ 可直接印证新增apcu驱动Cache_apcu.php并在 Cache.php 的驱动白名单中登记。memcached 驱动支持 UNIX socket且忽略未指定 hostname 的配置项。redis 驱动新增database配置自动选择库、移除socket_type配置、优化序列化逻辑。新增get_loaded_driver()方法返回当前实际使用的驱动见 Cache.php。Form Validation 库set_rules()在首个参数非数组且$rules参数未用时抛出BadMethodCallException。新增规则valid_mac对应源码 Form_validation.phpPHP 5.5 直接使用filter_var($mac, FILTER_VALIDATE_MAC)低版本则用正则兼容两种 MAC 书写格式aa:bb:cc:dd:ee:ff/aabb.ccdd.eeff。规则列表中包含is_array时可直接对整个数组进行校验run()新增第二参数返回处理后的数据。Email 库validate选项默认值改为TRUE批量发送时send()恒返回TRUE。Image Manipulation 库dynamic_output渲染时支持new_name自定义输出文件名、尽可能支持多字节文件名并新增WebP 图像支持。2.5 Database 层变更移除禁用 Query Builder 的选项——它成为数据库层的必备组件。OCI8 驱动移除$curs_id属性及get_cursor()、stored_procedure()方法。移除旧版 sqlite 驱动SQLite 2PHP 5.4 不再附带。initialize()失败时抛RuntimeException不再返回错误码db_connect()强制设置连接字符集。Database Forge字段默认值支持CURRENT_TIMESTAMP等日期/时间类型移除add_column()的$_after参数。Query Buildersystem/database/DB_query_builder.php新增having_in()/or_having_in()/not_having_in()/or_not_having_in()四个方法源码 L793-L829 区域统一委托内部_wh_in()到qb_having。where_in()系列四个方法第二参数改为强类型array拒绝非数组输入源码 L721-L778。join()第三参数支持NATURAL子句别名中允许出现点号。2.6 Helpers 层变更移除废弃的 Email Helper、Smiley HelperDate Helper 的standard_date()/nice_date()、Security Helper 的do_hash()、File Helper 的read_file()全部移除官方给出的替代方案均为 PHP 原生函数。url_title()移除 dash / underscore 分隔符选项。Inflector Helper 新增ordinal_format()生成 1st/2nd/3rd 序数词。Download Helperforce_download()可重命名已存在文件、更好利用服务器内存、通过 RFC 6266 的filename*属性支持多字节文件名。String Helper移除trim_slashes()、repeater()及random_string()的 unique/encrypt 选项。HTML Helper移除br()、nbs()meta()支持 charset 与 property 属性doctype()默认文档类型改为HTML 5。Form Helper移除form_prep()改用html_escape()form_upload()删除从未使用的第二个参数。CAPTCHA Helper新增img_alt默认 captcha与img_class选项支持输出data:image/png;base64数据 URI恒生成 PNG废弃$img_path等独立参数的旧用法。三、3.1.x安全加固与 PHP 8 兼容的长尾维护期3.1.x 系列横跨 2016-2022 年是 CI 3.x 生命周期最长、安全补丁最密集的维护线。3.1.12 / 3.1.132022-03修复 PHP 7 下session.use_strict_mode未强制生效导致的会话固定session fixation漏洞。新增SameSiteStrictCSRF cookie 属性配套新增$config[cookie_samesite]见 config.php L390-L401默认 Lax与set_cookie()的$samesite参数。Session 库新增$config[sess_samesite]选项默认 Lax见 config.php L373。为 PHP 8.1 与旧版本之间的兼容引入 Session 驱动包装类源码 Session.php 中is_php(8.0) ? PHP8SessionWrapper : OldSessionWrapper的选择逻辑对应 PHP8SessionWrapper.php 与 OldSessionWrapper.php 两个文件。大量代码适配 PHP 8.0/8.1Database 库新增trans_active()方法暴露事务状态Query Builder 支持FULL [OUTER] JOINDatabase Forge 支持 Oracle 12.1 的AUTO_INCREMENTFile Uploading 支持 WebP 类型检测。3.1.9 – 3.1.112018-20193.1.9auto_link()生成链接默认加relnoopener防 tab hijacking修复 session fixation 漏洞use_strict_mode此前形同虚设。3.1.10pdo/mysql 驱动支持ssl_verifyInflector 的is_countable()因与 PHP 7.3 内建函数冲突更名为word_is_countable()。3.1.11CI_Log日志行尾改用PHP_EOLSession/Cache 的 redis 驱动适配 phpRedis 5Session files 驱动在sess_save_path不可用时记日志并触发启动失败而非抛异常。3.1.3 – 3.1.82017-20183.1.3修复 XSS、vars()文件包含、Email 库mail/sendmail模式下的远程代码执行等漏洞csrf_verify()增加时序侧信道防护form_open()针对 BREACH 攻击防护。3.1.4修复 Apache 下set_status_header()的 header 注入漏洞mbstring.func_overload启用时的一批字节安全byte-safety问题。3.1.8xss_clean()增加对 JavaScript 标签函数的过滤。3.1.02016-07-26修复 odbc 驱动的 SQL 注入set_realpath()过滤php://包装器输入。正式放弃 PHP 5.2.x 及 5.3.7 以下版本。password_hash()兼容函数优先使用random_bytes()、直接读/dev/urandom。Encryption 库优先使用random_bytes()Session 库在回退到 php.ini 的session.save_path时输出 debug 日志。四、3.0.x3.x 大版本的奠基与重构4.1 3.0.02015-03-30从授权到架构的全面升级MIT License 重新授权终结旧有的专有授权对应仓库 license.txt。最低 PHP 要求 5.2.4推荐 5.4默认数据库驱动改为 mysqli。$_SERVER[CI_ENV]可控制ENVIRONMENT常量新增异常处理器错误模板移至 application/views/errors/ 并支持$config[error_views_path]配置。Session 库完全重写为自包含驱动模式$config[sess_driver]提供 files/database/redis/memcached 四种驱动默认 files新增sess_save_path、tempdata 临时数据、has_userdata()等方法。Active Record 正式更名 Query Builder新增get_compiled_select()/get_compiled_insert()/get_compiled_update()/get_compiled_delete()四个只编译不执行的方法以及unbuffered_row()、data_seek()等结果集方法。新增全新的Encryption 库取代不安全的 Encrypt 库新增 Redis、Wincache 缓存驱动与increment()/decrement()原子操作。新增composer_autoload配置、cookie_httponly配置、log_file_permissions配置。Routing 支持多级控制器目录、HTTP 动词路由、回调路由、translate_uri_dashes保留路由。大量 deprecated API 移除SHA1 库、EXT 常量、$autoload[core]、standard_date()等。该版本还沉淀了一批后来被 3.2.0 沿用至今的 Helper 能力html_escape()公共函数、url_title()增强、force_download()新增 MIME 开关与 NULL 读取模式、CAPTCHA 的word_length/pool/colors/font_size等选项。4.2 3.0.1 – 3.0.62015-20163.0.1hash_pbkdf2()兼容函数加入 DoS 缓解mysqli/pdo_mysql 支持 SSL 连接url_title()支持 Unicode。3.0.2修复一批xss_clean()攻击向量base_url()/site_url()支持协议相对 URL。3.0.3base_url()为空时回退$_SERVER[SERVER_ADDR]防 Host 头注入CAPTCHA 使用系统 PRNG。3.0.4安全随机数全面拥抱 PHP 7 的random_bytes()oci8 支持 Oracle 12c 的OFFSET-FETCH。3.0.5insert_batch()/update_batch()新增$batch_size参数默认 100。3.0.6Cache memcached 驱动新增析构函数确保连接关闭Form Validation 废弃prep_for_form()。五、2.x 与 1.x历史遗产中的现代基因虽然 3.x 已全面重构但 2.x/1.x 时代的许多设计至今仍能在此仓库中看到影子2.2.0Session 库以 HMAC 认证替代 MD5 校验和Encrypt 库移除xor_encode()。2.1.0新增 CUBRID 与 PDO 数据库驱动新增 Migration 库对应 system/libraries/Migration.phpinsert_batch()支持 OCI8SMTP 支持 TLS/SSL。2.0.0移除 PHP 4 支持要求 5.1.6移除 Scaffolding 与 Plugins引入 Drivers 特殊库类型对应 system/libraries/Driver.php新增 CSRF 防护与 Security 库Cache 驱动APC/memcached/file诞生application 目录移出 system。1.7.2 / 1.7.0引入 Cart 库、新 Form Validation 库escape_like_str()、reconnect()等数据库能力出现Profiler 支持多数据库连接。1.3引入 Models 支持Active Record 大规模重构JOIN 等CI_ 前缀统一规范get_instance()全局函数诞生。Beta 1.02006-02-28首个公开发布版本。这些旧版本条目说明CI 的现代核心Query Builder、Security、Session 驱动化、缓存抽象并非一蹴而就而是在 1.x 的 Active Record Helper 体系上渐进演化而来。六、升级实战把 Changelog 变成迁移清单基于上述变更日志面向从 2.x 或旧 3.x 升级的开发者可归纳出四条硬性检查线配置项核对对照 application/config/config.php确认log_file/log_filename、cookie_samesite、sess_samesite、csrf_regeneration等新项已就位删除global_xss_filtering、rewrite_short_tags、log_file_extension等已移除项。API 替换is_cli_request()→is_cli()$this-router-fetch_class()→$this-router-classdo_hash()/read_file()/trim_slashes()等一律改用 PHP 原生函数表单验证的prep_for_form规则改为html_escape()。数据库层确认 Query Builder 无法再被禁用where_in()第二参数必须是数组若使用 OCI8 注意stored_procedure()已移除。会话与安全升级到 3.1.12 以获得use_strict_mode修复与 SameSite 支持Session 数据存储不再支持 cookie 方式确认sess_driver配置。七、结语一份可当作源码索引的版本地图changelog.rst 的价值不仅在于追溯历史文档中每一行变更都对应着 system/ 与 application/config/ 中真实存在的实现。本文通过valid_macForm_validation.php、having_in()系列DB_query_builder.php、Session PHP8 包装类Session.php、Cache 驱动白名单Cache.php等源码锚点展示了日志 → 源码的交叉验证方法。当你在升级 CI 3.x 应用或排查疑难问题时这份 Change Log 就是你定位行为的权威索引。【免费下载链接】CodeIgniterOpen Source PHP Framework (originally from EllisLab)项目地址: https://gitcode.com/gh_mirrors/co/CodeIgniter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/21 18:14:19

2018ces源码解析:3步搭好项目,告别只会语法

2018ces源码解析:3步搭好项目,告别只会语法 还在对着IDE发呆吗?你会写 print("hello") ,但一让搭个能跑的项目就懵。别急,今天咱们不整虚的,直接上 2018ces源码解析…

2026/9/21 18:14:19

Java 21+Spring Boot 3构建企业级RAG与智能体工作流

1. 项目概述:为什么在企业级AI工程中,Java 21 Spring Boot 3 是 RAG 与智能体落地的“稳态选择”别卷 Python 了——这句话不是唱衰 Python,而是直击当前 AI 工程化落地中最常被忽视的现实矛盾:原型快 ≠ 上线稳,单点…

2026/9/21 18:09:19

搞定羊皮卷之四原文速查手册告别Stack

搞定羊皮卷之四原文速查手册告别Stack 刚拿到《羊皮卷之四》电子版,想整理成速查手册,结果一跑代码就满屏红字。StackTrace 长得像天书,根本看不出哪行错了。这种报错一堆看不懂 StackTrace…

2026/9/21 18:54:23

Java微服务架构在汽修行业数字化中的应用实践

1. 项目背景与核心价值"码兄汽修系统"是一款基于Java技术栈开发的同城汽车服务链管理平台。这个项目的核心价值在于打通了传统汽修行业的信息孤岛,通过数字化手段重构了从车主需求到服务供给的完整链路。我在开发过程中发现,当前汽修行业存在几…

2026/9/21 18:54:23

ASP.NET学生信息管理系统架构设计与实现

1. 项目概述与核心架构设计这个基于ASP.NET和SQL Server的学生信息管理系统,是一个典型的教务管理类应用。系统采用经典的三层架构设计,包含表示层(ASP.NET Web Forms)、业务逻辑层(C#类库)和数据访问层&am…

2026/9/21 18:54:23

搞定复制粘贴这5道高频面试题,告别配置卡顿

搞定复制粘贴这5道高频面试题,告别配置卡顿 配置环境就卡半天,是不是经常遇到?明明照着文档抄代码,复制过来就报错,或者粘贴后缩进全乱了。这不仅仅是手速问题,更是面试官最爱挖的坑。 在Java、Python、Go等主流技术栈的 高频面试题…

2026/9/21 18:54:23

BGP是什么 3分钟搞懂 实战项目避坑指南

BGP是什么 3分钟搞懂 实战项目避坑指南 别再去啃那几百页的RFC文档了,真的,没人有那个耐心。做网络或后端开发的朋友,只要接过一个涉及多机房、跨运营商或者云厂商互联的 实战项目…

2026/9/21 18:49:23

搞定高铁餐项目,3个关键性能优化点让你的代码起飞

搞定高铁餐项目,3个关键性能优化点让你的代码起飞 刚学完Python语法,对着教程敲代码没问题,一上手真实项目就懵?别慌,我见过太多同行栽在这。很多人卡在“高铁餐”这类实际业务场景里,看似简单的点餐、订单处理,一上线就卡顿、数据错乱。问题不…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码