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_sa ve 不生效?先看项目有没有“映射”
把 "upload_on_sa ve": true 写在配置里了,但保存后服务器上一动不动——别着急骂插件,十有八九是 Sublime 根本不知道该把当前文件传到哪里去。它只对“已映射的项目内文件”触发上传。
- 右键侧边栏里的项目根文件夹 →
SFTP → Map to Remote…,这步会自动生成sftp-config.json并完成绑定 - 如果你手动新建了
sftp-config.json但没执行Map to Remote,插件不会认这个配置,等于白干 - 打开单个文件(没项目)、或项目里打开桌面某个 .js 文件,
upload_on_sa ve都不会触发 - 上传大文件时 UI 可能卡住,建议先关掉
upload_on_sa ve,用Ctrl+Shift+P → SFTP: Upload File手动试一次,确认基础功能正常再启用自动上传
上传成功但 PHP 报 500?别怪插件,查权限和 SELinux
SFTP 插件只负责把字节写过去,不处理 Web 服务器上下文。上传后页面崩了,大概率是权限或系统策略拦住了路。
- 默认上传文件权限是
644,目录是755;某些启用了suPHP或open_basedir的服务器要求脚本属主匹配、权限为600或644,不匹配就报 500 - 可以在
sftp-config.json里加"file_permissions": "644"和"dir_permissions": "755",但前提是你确认服务器接受这个组合 - 更稳妥的做法是上传后立刻执行远程命令:
SFTP → Execute Command→ 输入chmod 644 index.php - 如果总看到
Failed to write file却提示 “Success”,登录服务器跑ausearch -m a vc -ts recent查 SELinux 拦截日志——这玩意儿经常不声不响就把权限卡死了
说到底,最容易被跳过的其实是项目绑定和配置文件位置。90% 的“连不上”“不上传”问题,根源不在 SSH 或网络,而在 Sublime 没认出你在操作哪个项目。动手前先确认 Project → Add Folder to Project 和右键 Map to Remote 这两步做完了,比反复改 JSON 有用得多。