定位思路与日志来源
tail -f /path/to/project/runtime/log/*.loggrep -E 'ERROR|Exception' /path/to/project/runtime/log/*.log常见错误模式与排查要点
| 现象 | 日志关键词 | 常见根因 | 快速修复 |
|---|---|---|---|
| 访问接口或页面返回 HTTP 500 | Nginx/Apache error_log 出现 PHP Fatal/Parse error;应用日志无输出 | 代码语法错误、未捕获异常、配置不当 | 打开调试查看具体行号;修正语法/异常;核对配置 |
| 页面空白或偶发 500 | 应用日志无新日志;服务器日志报 Permission denied | runtime 目录不可写、目录不存在 | 确认 runtime 及子目录存在且 Web/CLI 用户可写(如 chmod/chown) |
| 模板渲染失败 | “模板不存在”“template not exists” | 大小写/路径错误、视图配置被修改 | 按日志中打印的“实际查找路径”核对文件;检查 config/view.php 的 view_base/view_path |
| 数据库连接失败 | “SQLSTATE[HY000]: General error: 2006 MySQL server has gone away” | 连接超时/被回收、长连接失效 | 调整 wait_timeout;启用连接检测/重连;避免 FPM 进程长期占用连接 |
| 入口文件包含失败 | “open_basedir restriction in effect” | PHP open_basedir 限制 | 将项目根目录加入 open_basedir 或移除限制 |
| 某些函数不可用 | “scandir() has been disabled for security reasons” | php.ini disable_functions 禁用 | 从禁用列表移除相关函数并重启 PHP-FPM |
| URL 重写异常(访问 / 返回 404) | 无 | Nginx 未正确重写到 index.php | 增加 try_files 或 rewrite 规则将请求转发到入口文件 |
| 以上模式与修复要点对应的日志特征与处置方法,可结合服务器与应用日志交叉验证。 |
高效排查命令清单
tail -f /var/www/your-app/runtime/log/*.log | egrep -i 'error|exception|fatal'tail -n50 /var/log/nginx/error.log | sed 's/\\n/ /g'ls -ld /var/www/your-app/runtime /var/www/your-app/runtime/loggrep -R "PHP Fatal error" /var/log/php-fpm* /var/log/nginx/ 2>/dev/nullphp -i | grep disable_functionscurl -I https://your-domain/non-existent-path配置与预防建议