codeigniter 4 中新手最易出错的是 baseurl、web 根目录、.env 格式、session 路径四项配置:baseurl 必须写在 app.php 或 .env 中且带协议和结尾斜杠;documentroot 必须指向 public/ 目录;.env 键名全大写加点号、等号无空格;session 保存路径须为绝对路径,如 writepath . 'sessions'。

新手最容易改错的不是配置项数量多,而是几个关键项的写法和位置没对上——改了等于没改,甚至引发 404、资源加载失败或 session 崩溃。
baseURL / base_url 配置错误
CI3 和 CI4 的写法、位置、作用完全不同,混用必出问题:
- CI3:在
application/config/config.php中写$config['base_url'] = 'http://localhost/myapp/';,结尾必须带斜杠,且不能包含index.php或public/ - CI4:在
app/Config/App.php中设public $baseURL = 'http://localhost/';(开发环境),或通过.env写app.baseURL="http://localhost/";若项目在子目录(如/crm/),必须写完整路径,但不能写成http://localhost/crm/public/——CI4 自动处理 public 入口,多加/public/会导致 CSS/JS 404 - 常见翻车:
base_url写成相对路径(./)、漏掉协议(localhost/)、末尾没斜杠、或误把index.php当作路径一部分
Web 根目录指向错误
这是 404 的最大来源,尤其 CI4 新手常忽略:
- Apache/Nginx 的
DocumentRoot必须指向public/目录(CI4),而不是项目根目录或app/目录 - 若指向错(比如指向
htdocs/crm/),所有非首页请求都因未命中public/index.php而直接 404,路由根本没机会执行 - CI3 则相反:DocumentRoot 指向项目根目录(含
index.php),base_url与之匹配即可
.env 文件格式不规范
CI4 默认优先读 .env,但大小写、空格、语法稍错就静默失效:
- 键名必须全大写 + 点号路径,
app.baseURL写成APP.BASEURL或app.baseurl都无效 - 等号两侧绝对不能有空格:
CI_ENVIRONMENT = "development"→ 实际读成空字符串;正确写法是CI_ENVIRONMENT="development" - 数组类配置(如数据库)不能写成 JSON,必须拆成点号键:
database.default.hostname="127.0.0.1",而非database={"default":{...}}
session 保存路径设为相对路径
报 mkdir(): Invalid path 却找不到原因?大概率是这里:
- CI4 的
app/Config/Session.php中,$sess_save_path必须是绝对路径 - 错误写法:
'writable/sessions'或../writable/sessions - 正确写法:
WRITEPATH . 'sessions'(推荐)或FCPATH . 'writable/sessions',确保父目录存在且可写 - 手动创建目录后,还需
chown www-data:www-data(Linux)或设为 Web 进程用户可写,仅 chmod 777 不解决根本问题











