使用rap2hpoutre/laravel-log-viewer遇目录重复显示问题求解决方案
解决rap2hpoutre/laravel-log-viewer多子目录重复显示问题
这个问题确实有不少开发者遇到过,核心原因是包的递归目录遍历逻辑未处理循环引用(比如符号链接、嵌套目录指向),导致同一目录被重复遍历输出,以下是几个可行的解决办法:
临时应急修复(直接修改包文件)
找到项目中包目录下的src/LogViewer.php,定位到处理目录遍历的方法(比如getFiles或递归扫描的函数),添加已访问目录的记录逻辑,避免重复遍历:// 在递归遍历函数中新增参数记录已访问目录 private function scanDir($dir, &$visited = []) { // 获取目录真实路径,跳过已访问的目录 $realDir = realpath($dir); if (in_array($realDir, $visited)) { return []; } $visited[] = $realDir; // 保留原有遍历文件、子目录的逻辑... }注意:这种修改会在包更新时被覆盖,仅适合临时使用。
长期稳定方案(Fork仓库自定义修改)
- 将
rap2hpoutre/laravel-log-viewer仓库fork到自己的GitHub账号 - 在fork的仓库中修改上述遍历逻辑,增加循环避免的处理
- 修改项目的
composer.json,引用自己的fork版本:"repositories": [ { "type": "vcs", "url": "https://github.com/你的用户名/laravel-log-viewer" } ], "require": { "rap2hpoutre/laravel-log-viewer": "dev-你的分支名" } - 运行
composer update rap2hpoutre/laravel-log-viewer安装修改后的版本
- 将
调整日志目录结构
检查你的日志目录是否存在符号链接指向父目录、嵌套目录循环引用的情况,直接调整目录结构去掉这类循环,也能从根源解决重复显示问题。
另外,你可以去该包的GitHub Issues页面搜索"directory loop"或"duplicate directories",能找到其他开发者的相关讨论和现成的修复PR,直接参考使用即可。
内容的提问来源于stack exchange,提问作者San Tack
相关产品推荐
相关产品推荐

