PhpStorm为何索引项目外文件夹?Drupal 8项目类重复定义求助
这种情况我在做多项目Drupal开发时也碰到过,PhpStorm的索引机制有时候会因为缓存残留或误配置,出现“越界”索引其他项目内容的情况,下面给你拆解可能的原因和对应的解决办法:
可能的触发原因
- 缓存残留:PhpStorm会保留最近打开项目的索引缓存,哪怕你当前只打开了Project A,之前打开的Project B的索引可能还没被彻底清理,导致它识别到同名类的多个定义。
- Include Path误配置:可能不小心把Project B的目录添加到了Project A的PHP Include Path中,PhpStorm会自动索引Include Path里的所有文件,自然会扫到另一个项目的类。
- 多项目同时打开:如果你在PhpStorm中同时打开了两个项目,它默认会索引所有打开项目的内容,这种情况下出现类重复提示就很正常了。
- Content Root范围错误:极少数情况下,Project A的Content Root可能被误设置为包含Project B的路径,导致索引范围直接超出了当前项目。
具体解决步骤
清理索引缓存(最常用的修复方式)
打开File -> Invalidate Caches...,选择Invalidate and Restart。重启后PhpStorm会重新构建当前项目的索引,之前残留的其他项目索引会被彻底清除。检查并修正Include Path
进入File -> Settings -> Languages & Frameworks -> PHP,查看右侧的Include Path列表。如果发现Project B的目录在里面,选中它并点击减号删除,然后应用设置即可。关闭无关项目
如果你同时打开了Project B,直接通过File -> Close Project关闭它。只保留当前需要处理的Project A,PhpStorm就只会专注索引这个项目的内容了。确认Content Root范围
打开File -> Project Structure -> Modules,选中Project A对应的模块,切换到Content Roots标签。检查所有列出的路径,确保没有包含Project B的目录,如果有,点击路径后选择Remove Content Root。检查Composer自动加载配置
偶尔Drupal项目的composer.json里的autoload部分可能误引用了外部路径,打开Project A的composer.json,检查autoload和autoload-dev下的路径,确保没有指向Project B的内容。
内容的提问来源于stack exchange,提问作者bleen

