ftp-sync插件默认不启用保存即同步,需手动在.vscode/ftp-sync.json中设置"uploadonsave": true(布尔值),否则ctrl+s无反应;该设计为安全默认,防止未测试代码误推线上。

FTP-Sync 插件在 VSCode 里做实时上传,不是“开箱即用”,而是必须手动配置、且默认不启用保存即同步——很多人卡在这一步,以为装完插件就自动传了。
为什么 ftp-sync:init 生成的配置默认不上传?
插件设计上把上传行为和连接配置解耦:ftp-sync:init 只生成 .vscode/ftp-sync.json,但不会自动开启 uploadOnSave。这是安全默认:防止误操作把未测试代码直接推到线上。
常见错误现象:Ctrl+S 后毫无反应,终端无日志,服务器文件没变——八成是漏设这个开关。
- 打开项目根目录下的
.vscode/ftp-sync.json - 确认存在
"uploadOnSave": true字段(布尔值,不是字符串) - 如果字段缺失,手动添加;如果写成
"uploadOnSave": "true",会静默失效 - 改完保存配置文件,无需重启 VSCode,但需确保当前编辑的是该项目工作区
ftp-sync:upload 手动触发失败的典型原因
命令面板执行 ftp-sync:upload 报错或无响应,通常不是插件坏了,而是路径或权限没对上。
使用场景:调试时想单传某个文件,或刚改完配置想验证连通性。
- 确保当前打开的是项目根目录(不是子文件夹),否则插件找不到
.vscode/ftp-sync.json -
"remotePath"必须以/开头,且与宝塔 FTP 账户设置的“根目录”完全一致(比如宝塔设为/www/wwwroot/myapp,这里就得填/www/wwwroot/myapp,不能填./或空字符串) - 检查
"host"是 IP 还是域名——宝塔默认允许 IP 登录,但若用了域名,需确认本地/etc/hosts或 DNS 能解析 - FTP 端口默认是
21,如果宝塔改过端口(比如设为2121),必须显式加"port": 2121
宝塔 FTP 权限与 ftp-sync 冲突怎么破?
插件上传后文件变成 600 或 700,导致 PHP 脚本无法读取、CSS 不生效——这是宝塔 FTP 用户权限隔离机制和插件默认 umask 共同导致的。
性能影响不大,但直接导致功能异常,必须调。
- 在
.vscode/ftp-sync.json中添加"fileMode": "644"和"dirMode": "755" - 不要依赖宝塔面板里的“强制修改权限”勾选项,它只对被动上传生效,
ftp-sync是主动 FTP 命令流,走的是另一套权限控制 - 如果项目含可执行脚本(如部署钩子),单独给对应文件设
"fileMode": "755",避免全局755带来安全隐患 - 注意:mode 值必须是字符串形式的八进制,写成
644(数字)会报错
多个项目共用同一台宝塔服务器,怎么避免配置串扰?
VSCode 工作区是配置作用域边界——这点容易被忽略。你在一个项目里改了 ftp-sync.json,不会影响另一个项目,但如果你把配置文件放在用户级或全局位置,就会出问题。
容易踩的坑:有人把 .vscode/ftp-sync.json 放到桌面或用户根目录,以为“一次配置,处处生效”,结果所有项目都往同一个远程路径传。
- 每个项目必须有自己独立的
.vscode/ftp-sync.json,放在项目根目录下 - 不要用 VSCode 的“全局设置”覆盖插件行为,
ftp-sync不支持全局配置 - 如果要管理多环境(测试/生产),在同一个项目内用不同配置文件名(如
sftp-test.json),再配合命令面板手动选,别指望插件自动识别 - Git 提交时记得把
.vscode/加入.gitignore,尤其密码字段——哪怕你用了密钥认证,配置里也别留明文凭据











