核心是通过 docker 容器化实现工具链、依赖和配置的跨平台一致,配合 composer.lock 提交、lf 换行规范、翻译资源标准化路径及 vs code remote-containers 开发模式。

要在 Windows 和 macOS 上同步 Symfony 项目开发环境,核心不是“复制文件”,而是保证工具链一致、依赖可复现、配置可移植。直接拷贝本地 vendor 或缓存目录会失败,必须依靠容器化或声明式配置来实现真正跨平台兼容。
统一使用 Docker 容器运行 Symfony
Docker 是目前最可靠的方式,它屏蔽了宿主机差异,让 PHP 版本、扩展、Web 服务器、数据库等全部在相同镜像中运行。
- 在项目根目录编写 docker-compose.yml,定义 nginx、php-fpm、redis、postgresql 等服务,所有配置面向 Linux 容器,不区分宿主系统
- Windows 用户需启用 WSL2(推荐)或使用 Docker Desktop;macOS 用户直接安装 Docker Desktop 即可
- 所有成员执行
docker-compose up -d,即可获得完全一致的运行时环境,包括symfony/translation所需的 intl 扩展、时区、locale 设置
用 Composer 锁定依赖版本
确保 composer.lock 提交到 Git,这是跨平台一致性的基石。
- Windows 和 macOS 的 line-ending 差异可能影响 lock 文件校验,建议在项目根目录设置
.gitattributes: -
* text=auto eol=lf(强制所有文本文件用 LF 换行) - 运行
composer install时,Docker 内部执行,避免宿主机 PHP 环境干扰
翻译资源与配置集中管理
Symfony Translation 的多语言支持本身是跨平台友好的,但路径和加载方式需标准化。
- 将翻译文件统一放在
translations/目录下,格式固定为messages+intl-icu.en.xlf或validators.zh.yaml - 在
config/packages/translation.yaml中显式声明路径,不依赖操作系统默认 locale - 避免硬编码路径分隔符:用
__DIR__ . '/..' . \DIRECTORY_SEPARATOR . 'translations'或 Symfony 的%kernel.project_dir%参数
开发工具链保持一致
编辑器、终端、命令行行为需对齐,减少“在 Mac 上能跑,在 Windows 上报错”的低级差异。
- 统一使用 VS Code + Remote-Containers 扩展:直接在容器内开发,Shell、PHP CLI、Symfony CLI 全部来自容器
- 禁用 Windows 的 CMD/PowerShell 默认终端,改用 VS Code 内置的 bash(WSL2) 或 Git Bash
- 所有脚本(如
bin/console、自定义 Makefile)用 Unix 风格换行,并在 Git 中全局设置core.autocrlf=input











