PhpStorm 打开加载卡死

📅 2026/7/8 21:47:45 👁️ 阅读次数 📝 编程学习
PhpStorm 打开加载卡死

PhpStorm 自动打开某文件就卡死 —— 手动解决办法

现象:已知某个文件(或"当前打开的第一个标签")一被自动打开,PhpStorm 就整个界面冻死。
原因:该文件被记成了项目的"已打开标签",每次开项目自动恢复打开它就卡死。
解决:不动源文件,只删掉 IDE 里"自动打开它"的记录。以下全部在PowerShell(管理员或普通用户均可)里执行。

第 1 步:结束假死进程

Stop-Process-Name phpstorm64,fsnotifier64-Force

第 2 步:找出记录该文件的状态文件

把下面命令里的文件名换成实际名字(如inux.py):

Select-String-Path(Get-ChildItem"$env:USERPROFILE\.<IDE名><版本>\config\workspace"-Recurse)-Pattern"文件名"-ErrorAction SilentlyContinue

记下命中的 xml 路径,形如:
C:\Users\用户名\.PhpStorm2019.2\config\workspace\abc123.xml

IDE 名版本举例:PhpStorm 2019.2 → 目录名.PhpStorm2019.2;其他 JetBrains IDE 同理(.IntelliJIdea2023.2等)。

第 3 步:备份并删除该文件的两处引用

把下面命令里的路径换成第 2 步记下的 xml 路径,文件名换成实际名字:

$xml="路径"Copy-Item$xml($xml+".bak")# 先备份$doc=New-ObjectSystem.Xml.XmlDocument;$doc.Load($xml)$nodes=$doc.SelectNodes("//*[@file[contains(., '文件名')]]")$toRemove= @()foreach($nin$nodes){if($n.LocalName-eq'file'){$toRemove+=$n}elseif($n.LocalName-eq'entry'){if($n.ParentNode.LocalName-eq'file'){$toRemove+=$n.ParentNode}else{$toRemove+=$n}}}foreach($rin$toRemove){[void]$r.ParentNode.RemoveChild($r)}$doc.Save($xml)

删完可再跑第 2 步确认命中数为 0,即清理干净。

第 4 步:重新启动 PhpStorm

正常启动后项目不再自动打开该文件,卡死消失。


注意

  • 源文件一个字节都不动,只改 IDE 状态。
  • 改坏可用第 3 步生成的.bak把 xml 还原。
  • 关掉该文件再退出 IDE,可避免下次又被记成打开标签。