codeigniter 的系统交互能力依赖核心目录结构的规范操作:cli 运行需 index.php 入口及标准控制器路径;配置集中于 application/config/;敏感静态资源须隔离或代理访问;system 为只读框架核心,application 为唯一业务开发区。

CodeIgniter 的系统交互能力主要依赖于对核心目录结构的理解和合理操作,尤其在 CLI 运行、安全控制、配置管理与文件访问等场景中,明确各目录职责并规范操作方式,才能保障项目稳定性和可维护性。
CLI 运行依赖的目录与入口路径
命令行运行需确保项目根目录下存在 index.php 入口文件,并能被 PHP CLI 正确解析。控制器必须放在 application/controllers/ 下,类名首字母大写、文件名全小写(如 Tools.php),且继承 CI_Controller。调用时通过 php index.php tools message "John" 形式传参,参数顺序与 URL 路由一致。框架自动识别 CLI 环境(is_cli() === TRUE),可用于屏蔽 Web 访问、定时任务或批量操作。
关键配置文件所在位置与修改原则
所有项目级配置集中在 application/config/ 目录:
-
config.php:设全局参数,如
base_url、charset、time_reference;修改后立即生效,无需重启服务 -
database.php:必须确认
dbdriver为mysqli或pdo,char_set和dbcollat需统一为utf8mb4及对应校对规则,否则易出乱码或连接异常 - routes.php:定义 URL 到控制器方法的映射,支持正则匹配与通配符,避免硬编码路径
-
autoload.php:声明自动加载的辅助函数、库、模型等,减少控制器内重复
$this->load->xxx()
public 或 assets 目录的安全访问控制
静态资源若含敏感内容(如日志、私有上传文件),不能直接暴露在 Web 可访问路径下。推荐做法:
- 将敏感文件移出 Web 根目录(如放到
application/logs/或private/uploads/) - 若必须保留在 public 子目录(如
public/logs/),需在该目录下添加.htaccess文件,用RewriteRule ^.*$ - [F,L]拒绝直接 HTTP 访问 - 通过控制器代理读取:新建一个
File_proxy控制器,检查登录态后用readfile()输出文件内容,URL 形如/proxy/log?name=error.log
system 与 application 的职责边界
二者不可混用,遵循“框架不动、业务独放”原则:
-
system/ 是 CI 框架核心,含
core/、database/、libraries/等,严禁直接修改;扩展功能应通过application/core/继承重载基类(如MY_Controller.php) -
application/ 是唯一业务开发区,包含
controllers/、models/、views/、config/等子目录;缓存、日志、钩子等也在此目录下独立管理 - 入口文件
index.php中的$system_path和$application_folder变量可自定义路径,便于多项目共用同一份 system 文件











