ci 3.1.13 手动安装后需配置环境模式、base_url、.htaccess位置与规则、数据库连接参数及logs/cache目录权限,否则将出现403、白屏或404等问题。

CI 3.1.13 手动安装后不能直接运行,必须完成几处关键配置,否则会报 403 Forbidden、Undefined index: SERVER_NAME 或白屏。核心问题不在代码本身,而在 Web 服务器路径映射和框架路径常量的初始化时机。
确认 index.php 的环境模式与 ENVIRONMENT 常量匹配
CI 3 默认在 index.php 顶部定义 ENVIRONMENT 为 'development',但这个值必须和你的实际部署环境一致,否则错误日志可能被静默丢弃,导致调试困难。
- 开发环境:保留
define('ENVIRONMENT', 'development');,确保application/logs/可写,且 PHP 开启display_errors = On - 生产环境:必须改为
define('ENVIRONMENT', 'production');,否则可能暴露敏感路径或数据库配置 - 检查
application/config/config.php中的$config['base_url']是否为空——CI 3 不自动推导,留空会导致 CSS/JS 404,应设为类似'http://localhost/myapp/'(末尾带斜杠)
.htaccess 放错位置或规则未生效
CI 3 依赖 Apache 的 mod_rewrite 隐藏 index.php,但常见错误是把 .htaccess 放在 application/ 或 system/ 目录下,其实它必须放在 Web 根目录(即包含 index.php 的那一层)。
- 正确路径示例:
/var/www/html/.htaccess(对应 URLhttp://localhost/),而非/var/www/html/application/.htaccess - 内容必须包含启用重写的最小规则:
<ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </ifmodule> - 若用 Nginx,不能用 .htaccess,需在 server 块中手动配置 rewrite,例如:
try_files $uri $uri/ /index.php?$query_string;
application/config/database.php 的 hostname 和 username 不是“localhost”和“root”就一定错
很多本地环境(如 MAMP、XAMPP、Docker)的 MySQL 实际监听的是 socket 或非标准端口,硬写 'localhost' 会导致连接超时,错误提示却只显示 Unable to connect to your database server,掩盖真实原因。
- 优先尝试
'127.0.0.1'替代'localhost',绕过 Unix socket 查找逻辑 - 确认端口是否非默认 3306:如 Docker 环境常用
'3307',需在database.php中显式设置'port' => '3307' - 密码为空时,不要留
''字符串,而应设为NULL(CI 3 会特殊处理),否则某些驱动会误判认证失败
system/ 和 application/ 目录权限被忽略
CI 3 在运行时需要往 application/logs/ 写错误日志,往 application/cache/ 写编译后的视图缓存。如果这两个子目录不可写,就会静默失败,页面空白且无任何提示。
- Linux/macOS 下执行:
chmod -R 755 application/logs application/cache(不推荐 777) - Windows IIS 用户注意:
IUSR或应用池标识用户必须对这两个目录有“修改”权限,仅“读取”不够 - 验证方式:在
application/logs/下手动创建一个空文件,看是否能保存;若失败,说明 Web 进程无写权
最易被跳过的点是 base_url 为空和 logs/ 目录不可写——它们不会抛出明显异常,但会让整个应用处于“半瘫痪”状态:页面能打开,但样式丢失、AJAX 失败、错误不记录。动手前先盯住这两处。











