关键在于工具链统一、配置可移植、服务可控:用zip包配windows php,homebrew装macos php;artisan serve显式指定host/port;.env统一管理,docker运行mysql;git设lf换行。

要在Windows和macOS之间实现Laravel开发环境的无缝衔接,关键不是“完全一致”,而是核心工具链统一、项目配置可移植、本地服务行为可控。跨平台不等于镜像复制,而在于避免系统特有陷阱(如路径分隔符、权限模型、默认PHP版本、防火墙策略),让同一份Laravel项目在两台机器上开箱即用。
统一依赖管理:绕过系统PHP,用版本化工具链
Windows和macOS自带或包管理器安装的PHP版本常不一致,且扩展启用方式不同(如Windows靠php.ini改分号,macOS靠brew link)。推荐统一使用以下方式:
-
Windows:用官方x64 Thread Safe ZIP包解压后手动配置,确保
php_mbstring、php_openssl、php_zlib已启用;环境变量只加C:\php,并验证php -m | findstr mbstring有输出。 -
macOS:用Homebrew安装指定版本,例如
brew install php@8.2,再执行brew link --force php@8.2覆盖默认PHP;检查which php指向/opt/homebrew/bin/php(Apple Silicon)或/usr/local/bin/php(Intel)。 -
共用方案:无论哪边,都通过
composer create-project laravel/laravel myapp "11.*" --no-interaction初始化项目,不依赖全局laravel/installer,避免版本漂移。
本地服务器行为对齐:避免artisan serve的平台差异
php artisan serve在Windows默认绑定127.0.0.1:8000,macOS可能因IPv6优先或防火墙拦截导致访问失败。统一做法是:
- 启动时显式指定host与port:
php artisan serve --host=127.0.0.1 --port=8000 - 确保
.env中APP_URL=http://127.0.0.1:8000,而非localhost(某些macOS DNS解析会延迟或失败) - Windows需确认防火墙放行TCP 8000端口;macOS需在“系统设置→网络→防火墙→选项”中允许PHP服务(或临时关闭防火墙测试)
数据库与环境配置可移植性
MySQL在Windows常随XAMPP安装,macOS多用Homebrew或Docker,直接共用服务不可靠。更稳妥的是:
- 项目根目录下统一使用
.env,但不提交敏感值;用.env.example提供结构模板(含DB_HOST、DB_PORT等字段) - Windows开发可用XAMPP的MySQL(
DB_HOST=127.0.0.1),macOS开发推荐用Docker启动轻量MySQL:docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=myapp mysql:8.0 - 关键命令同步:运行迁移前都执行
php artisan key:generate和php artisan config:clear,避免缓存残留导致跨平台行为不一致
Git协作中的隐藏坑与修复
Windows默认CRLF换行,macOS用LF,混合提交易引发composer install报错或Blade模板渲染异常。预防措施:
- 项目根目录添加
.gitattributes文件,内容为:* text=auto eol=lf<br>*.php text<br>*.env text<br>composer.lock binary
- Windows用户执行:
git config --global core.autocrlf input
macOS用户执行:git config --global core.autocrlf true - 若已出现换行混乱,运行
dos2unix .env(macOS需先brew install dos2unix)或在VS Code中点击右下角CRLF切换为LF











