PhpStorm 不生成 ~ 结尾文件,而是 Git 或 Linux 文件管理器等外部工具备份所致;其默认启用的“safe write”会写临时文件,可能触发 ~ 备份;关闭该选项并禁用 Git 备份策略可避免,同时需清理残留的 ~ 文件和 jb_tmp 目录。

为什么 PhpStorm 会生成 ~ 结尾的文件
这类文件(如 config.php~、.env~)不是 PhpStorm 自己写的,而是外部工具(尤其是 Git 或某些 Linux 文件管理器)在执行备份、合并或编辑操作时留下的。PhpStorm 本身不生成 ~ 文件——但它默认开启 Use "safe write",会先写 .php.tmp 临时文件再原子替换,而部分 Git 钩子或 diff 工具会把旧版本自动存为 ~ 备份。
关闭 Use "safe write" 并确认 Git 不自动生成 ~
Safe write 是 PhpStorm 的默认行为,它用临时文件中转写入,虽安全但可能触发外部工具生成 ~ 备份。关掉它可减少中间态文件,但需承担写入中断风险:
- 进入
File | Settings→Appearance & Behavior | System Settings - 取消勾选
Use "safe write" (save changes to a temporary file first) - 同时检查 Git 设置:
git config --global core.backupStrategy none(避免 Git 自动保留~) - 若用 VS Code 或其他编辑器协同编辑同一项目,确保它们也没启用「创建备份文件」选项
清理已有 ~ 文件并防止 IDE 再创建 ___jb_tmp___
___jb_tmp___ 是 PhpStorm 在异常退出或索引重建时残留的临时目录,和 ~ 文件无关,但常被一起误认为“奇怪文件”。两者都要清,但来源不同:
- 关闭所有 PhpStorm 实例后,手动删除项目根目录下残留的
___jb_tmp___文件夹 - 用命令批量删
~文件:find . -name "*~" -delete(Linux/macOS)或 PowerShell:Get-ChildItem -Recurse -Include "*~" | Remove-Item - 在 PhpStorm 中启用
Settings | Editor | File Types,把*~加入Ignored files and folders,避免被索引或高亮
注意:Windows 资源管理器可能锁住 ~ 文件导致删不掉
如果提示“正在使用中”或“访问被拒绝”,不是 PhpStorm 在用,而是 Windows 自己的缩略图缓存、杀毒软件扫描、或资源管理器预览窗格在持有句柄:
立即学习“PHP免费学习笔记(深入)”;
- 先关掉 PhpStorm 和所有终端/IDE 关联进程
- 打开任务管理器,结束
explorer.exe→ 重启资源管理器(或直接进安全模式删) - 别依赖右键菜单“删除”,改用命令行或 Total Commander 等工具强制删
- 长期方案:在 Windows 组策略里禁用“为文件夹显示预览信息”,或关闭杀软实时监控项目目录
~ 是安全副本,PhpStorm 认为 ___jb_tmp___ 是恢复凭据,而 Windows 把它们全当“正在使用的文件”锁死。动手前先确认谁在写、谁在读、谁在拦。


















