Codeigniter 4 系统文件夹自动生成类视图HTML文件原因求解
CodeIgniter 4 System 目录自动生成文件成因解释
核心原因
你看到的自动生成文件是 CodeIgniter 4 的视图缓存文件,是框架内置性能优化机制的产物:
- 框架完成视图的变量替换、逻辑解析后,会把最终要输出的HTML内容持久化存储为缓存文件,下次请求对应路由时如果缓存未过期,会直接读取缓存内容返回,不需要重复执行视图渲染逻辑,因此缓存文件内容和你编写的view源码高度相似。
异常生成路径的原因
默认配置下,CI4 的缓存文件应该存储在项目根目录的 writable/cache/ 路径下,出现在system/核心目录属于异常情况,通常由两类配置问题导致:
- 你修改了
app/Config/Cache.php中的$storePath配置项,错误将缓存存储路径指向了system目录 - 项目根目录的
writable文件夹没有开放Web服务器运行用户的读写权限,框架无法写入默认缓存路径,自动 fallback 到了拥有写入权限的system目录,该配置存在核心文件被篡改的安全风险,需要尽快修正。
每次刷新都重新生成的原因
- 当前运行环境为开发模式(
CI_ENVIRONMENT配置为development),框架默认关闭缓存复用逻辑,每次请求都会重新生成缓存文件 - 你给对应视图设置的缓存有效期极短,每次请求都判定缓存已过期,需要重新生成
修复方案
- 修正缓存路径配置:打开
app/Config/Cache.php,确认public string $storePath = WRITEPATH . 'cache/';为默认值,禁止将缓存路径指向system核心目录 - 修正目录权限:给项目根目录下的
writable目录开放Web服务器运行用户的读写权限,Linux环境可执行命令chmod -R 755 writable完成配置 - 不需要视图缓存的场景,可以全局关闭缓存功能,或者在控制器调用
view()方法时单独关闭对应视图的缓存
内容的提问来源于stack exchange,提问作者Riski Nurohman
相关产品推荐
相关产品推荐

