sublime text 3 必须使用 package control 安装 wbond 版 sftp 插件、绑定项目、且 sftp-config.json 置于项目根目录并严格符合命名与字段规范,三者缺一不可;build 3xxx 为 st3,build 41xx 为 st4,二者插件不兼容。

Sublime Text 3 能用原版 SFTP 插件(作者 wbond)稳定上传,但必须满足三个硬性前提:插件通过 Package Control 安装、项目已绑定、sftp-config.json 放在正确位置且字段无误——缺一不可,否则右键没菜单、保存不上传、连错误提示都没有。
怎么确认你装的是 ST3 兼容的 SFTP 插件
ST3 和 ST4 的插件不兼容。打开 Help → About Sublime Text,看到 Build 3xxx(如 3211)才是 ST3;如果显示 Build 41xx,说明你实际在用 ST4,别硬试原版 SFTP,会报 ImportError: No module named urllib2。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package回车 - 等列表加载完,搜
SFTP,只选作者是wbond的那个(不是sftp-client或FTPSync) - 安装后必须重启 Sublime,否则
Project菜单里看不到 SFTP 项,右键也不会出现菜单
sftp-config.json 必须放对位置、写对名字
这个文件不是全局配置,它只对“你右键的那个文件夹”生效,且名字、路径、大小写错一个字符,插件就静默忽略——不报错、不提醒、不上传。
- 文件名必须是全小写、带连字符、.json 扩展名:
sftp-config.json(不是SFTP-config.json、sftp_config.json或sftp-settings.json) - 必须放在本地项目根目录下,也就是你通过
Project → Add Folder to Project加进侧边栏的那个文件夹里 -
remote_path必须以/开头,比如"/var/www/html";结尾不加/也行,但加了更安全,避免路径拼接偏移 - 密钥登录时,删掉
password字段,只留ssh_key_file,值填绝对路径:"ssh_key_file": "/home/you/.ssh/id_rsa"(Linux/macOS)或"ssh_key_file": "C:/Users/you/.ssh/id_rsa"(Windows)
upload_on_save 不生效?先看项目有没有“映射”
设了 "upload_on_save": true 却没反应,不是插件坏了,而是 Sublime 根本不知道该把当前文件传到哪——它只对“已映射的项目内文件”触发上传。
- 右键侧边栏里的项目根文件夹 →
SFTP → Map to Remote…,这步会自动生成sftp-config.json并完成绑定 - 如果手动新建
sftp-config.json但没执行Map to Remote,插件不会认这个配置 - 打开单个文件(没项目)、或项目里打开桌面某个 .js 文件,
upload_on_save都不会触发 - 上传大文件时 UI 可能卡住,建议先关掉
upload_on_save,用Ctrl+Shift+P → SFTP: Upload File手动试一次
上传成功但 PHP 报 500?别怪插件,查权限和 SELinux
SFTP 插件只负责把字节写过去,不处理 Web 服务器上下文。上传后页面崩了,大概率是权限或系统策略拦住了。
- 默认上传文件权限是
644,目录是755;某些启用了suPHP或open_basedir的服务器要求脚本属主匹配、权限为600或644 - 可在
sftp-config.json里加"file_permissions": "644"和"dir_permissions": "755",但仅限你确认服务器接受该组合 - 更稳妥的做法是上传后立刻执行远程命令:
SFTP → Execute Command→ 输入chmod 644 index.php - 如果总看到
Failed to write file却提示 “Success”,登服务器跑ausearch -m avc -ts recent查 SELinux 拦截日志
最常被跳过的其实是项目绑定和配置文件位置——90% 的“连不上”“不上传”问题,根源不在 SSH 或网络,而在 Sublime 没认出你在操作哪个项目。动手前先确认 Project → Add Folder to Project 和右键 Map to Remote 这两步做完,比反复改 JSON 有用得多。











