日志里找不到错误信息通常是因为日志未启用、级别过低或错误发生在日志系统启动前;需检查log_threshold、log_path权限、服务器/php错误日志,并手动测试日志通路,同时注意@抑制的错误。

日志里找不到错误信息,通常不是没出错,而是错误没被记录下来——可能是日志功能没开、级别设太低、或错误在日志系统启动前就发生了。
确认日志功能已启用
检查 application/config/config.php 中的配置项:
- log_threshold 必须大于 0(比如设为 1 记录错误,4 记录全部)
-
log_path 路径要可写(如
./app/logs/),且目录存在、权限正确(Web 服务器用户需有写入权限) -
log_file_permissions 建议设为
0644,避免因权限问题写失败
检查错误是否发生在日志系统加载之前
有些致命错误(如 PHP 解析错误、扩展缺失、index.php 顶部语法错误)会直接中断执行,根本走不到 CodeIgniter 日志模块。这类错误不会进 app/logs/,但会出现在:
- Web 服务器错误日志(Apache 的
error_log或 Nginx 的error.log) - PHP 错误日志(查看
php.ini中的error_log设置位置) - 命令行运行时直接输出(如
php index.php)
手动触发一条日志测试通路是否正常
在控制器或 index.php 开头加一行:
log_message('error', 'Test log entry at ' . date('Y-m-d H:i:s'));
然后刷新页面,看 app/logs/log-YYYY-MM-DD.php 是否新增这条内容。如果没出现,说明路径、权限或阈值配置有问题。
留意被 @ 抑制的错误
CodeIgniter 2.x 某些驱动(如旧版 mysql_driver.php)用 @ 屏蔽了 MySQL 函数调用错误,导致白屏且无日志。解决方法:
- 临时把相关代码里的
@mysql_改成mysql_(仅调试用) - 升级到 CodeIgniter 3+,改用
mysqli或PDO驱动,它们默认不屏蔽错误 - 在
index.php顶部开启 PHP 错误显示:ini_set('display_errors', 1); error_reporting(E_ALL);











