不能直接“点开就编辑”,必须配置Deployment + Remote Host视图,且服务端SFTP子系统启用、用户shell为/bin/bash、Root path填绝对路径、私钥为PEM格式、公钥已部署,否则仅显示只读快照。

不能直接“点开就编辑”,必须完成 Deployment + Remote Host 视图配置,且服务器端 SFTP 子系统、用户 shell、文件权限全部合规,否则看到的只是只读快照。
Remote Host 视图双击打不开或文件名变灰
这是最常被误认为“功能坏了”的现象,本质是 PhpStorm 只暴露了远程目录结构,但没建立可写通道。根本原因通常不是 IDE 设置错,而是服务端卡点:
-
Root path填了~或留空——SFTP 不解析波浪号,必须填绝对路径,比如/var/www/html - 服务器上该用户的 shell 被设为
/bin/false或/usr/sbin/nologin——SFTP 要求合法交互式 shell,改回/bin/bash并chsh -s /bin/bash username -
/etc/ssh/sshd_config里禁用了 SFTP 子系统——确认存在类似Subsystem sftp /usr/lib/openssh/sftp-server或Subsystem sftp internal-sftp的行,且未被注释 - 用户主目录或
~/.ssh权限太松——chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
Connection refused 或 Permission denied (publickey)
别在 PhpStorm 里反复试配置,先用终端验证 SSH 底层链路是否通:
-
Connection refused:运行ssh -i /path/to/private_key user@host -p 22,失败则检查systemctl status sshd(服务是否运行)、ufw status(防火墙是否放行 22 端口)、PhpStorm 中 Port 是否填成 80/3306 -
Permission denied (publickey):老版本 PhpStorm 不认 OpenSSH 默认生成的-----BEGIN OPENSSH PRIVATE KEY-----格式,转成 PEM:ssh-keygen -p -m PEM -f id_rsa;再确认公钥已追加到服务器~/.ssh/authorized_keys,且该文件权限是600
SFTP 配置里三个必填死点
这三个字段任意一个填错,Test Connection 可能显示成功,但实际浏览/上传会静默失败:
立即学习“PHP免费学习笔记(深入)”;
-
Host填 IP 或域名,不要带ssh://前缀——加了直接报错 -
Auth type选Key pair后,Private key file必须指向本地 PEM 格式私钥;Windows 下路径含空格或中文会失败,建议用正斜杠或双反斜杠 -
Root path必须是绝对路径,如/var/www/myapp;填相对路径或~/project会导致 Remote Host 打不开,或上传后文件落到/根目录下
改完保存,远程文件没更新
这是设计行为,不是 Bug。Remote Host 视图本身不上传——它只是缓存一份远程结构快照。编辑器标题栏出现 * 只代表本地缓存已改,不代表服务器落盘:
- 手动触发上传:右键文件 →
Upload to [server],或快捷键Ctrl+Shift+Alt+Up(Windows/Linux)/Cmd+Shift+Option+Up(macOS) - 启用自动上传:进
Tools → Deployment → Options,勾选Upload changed files automatically to the default server,并选On explicit save action——千万别选On file change,vendor/目录下改个字母就卡死 - 验证是否真上传:登录服务器执行
ls -l /path/on/server/file.php,看修改时间是否变化;Git 也看不到变更,因为服务器上压根没写磁盘
真正麻烦的不是配通,而是配通后误以为“编辑即同步”。Remote Host 是只读入口,Deployment 才是上传引擎,两者必须配合使用,缺一不可。任何环节权限、路径、格式出问题,都会导致“看起来能连,实际上写不了”。


















