PhpStorm 的保存即上传功能按路径映射范围生效,无法按文件名或后缀单独配置;需通过精准设置 Local path 映射(如 src/、templates/)和 Excluded paths(如 node_modules/**)来控制上传边界,且须确保路径拼接正确、显式保存触发。

保存即上传特定文件在 PhpStorm 中无法单独配置——它只按「路径映射范围」生效,不是按文件名或后缀过滤的。 你不能说“只传 .php 文件”或“跳过 package.json”,但可以通过精准控制 Mappings 和 Excluded paths 实现等效效果。
为什么“只上传某些文件”这个需求本身就有误导性
PhpStorm 的自动上传机制是基于「本地路径是否被纳入 Deployment 映射」触发的,不是监听文件类型。只要一个文件落在 Mappings 表格中某一行定义的 Local path 范围内,且未被排除,保存时就会上传。
- 不存在
upload_only_php_files = true这类开关 - 所谓“特定文件”,实际是你手动把它们放进/移出映射目录,或用排除规则挡住其他文件
- 试图靠文件名通配(比如
*.log)做上传控制,会失效——Excluded paths只影响上传动作,不反向触发上传
怎样让只有 src/ 和 templates/ 下的文件自动上传
关键不是“选中要传的”,而是“明确划出上传边界”。假设你项目结构是:
myapp/ ├── src/ ├── templates/ ├── node_modules/ ├── vendor/ └── .git/
在 Deployment → Configuration → Mappings 中这样填:
立即学习“PHP免费学习笔记(深入)”;
-
Local path:src/→Deployment path on server:/app/src/ -
Local path:templates/→Deployment path on server:/app/templates/ -
不要添加
Local path为.或myapp/的整行映射
再进 Options 页面,确认勾选了 Upload changed files automatically to the default server,并设为 On explicit save action。
上传前临时屏蔽某类文件:用 Excluded paths
如果你确实需要“保存时忽略某些文件”,唯一可靠方式是加排除规则,例如:
- 在
Mappings对应行点击Excluded paths右侧的... - 添加:
node_modules/**、vendor/**、.git/**、dist/*.min.js - 注意语法:
**匹配多级子目录,*只匹配当前层,dist/*.min.js会排除 dist 下所有以.min.js结尾的文件,但不会影响dist/js/app.min.js - 排除规则只在上传时生效;被排除的文件仍可手动右键
Upload to …
常见翻车点:改了文件却没上传,或者上传到错地方
绝大多数“没传成功”都不是功能失效,而是路径逻辑断了:
-
Local path填的是./src,但当前打开的文件实际路径是/Users/x/project/src/api/index.php—— PhpStorm 能识别,没问题;但如果填成src/(缺开头.或/),部分版本会匹配失败 -
Deployment path on server填了/var/www/html,但服务器 Nginx 的root是/var/www/html/myapp,结果文件传对了,浏览器访问/myapp/index.php却 404 - 用了符号链接(symlink)作为项目根目录,PhpStorm 有时读不到真实路径,导致
Local path自动识别错误;建议直接用物理路径 - 修改了文件但没按
Ctrl+S(比如只靠 IDE 自动保存),而你设的是On explicit save action—— 它真的一次都不会动
真正需要小心的,从来不是“怎么开开关”,而是每一条 Local path 和 Deployment path on server 是否能拼出你心里想的那个完整远程路径。少一个斜杠,就差一个层级。


















