「環境搭建」不再是新手劝退關卡。現代工具鏈已將 PHP 環境部署簡化為幾條指令或幾次點擊。本文對比三大主流方案:Docker 容器化(生產一致性最佳)、Laravel Valet/Hered(macOS 極致體驗)、phpStudy/XAMPP(Windows 圖形化入門),助你選擇最適合的工作流。
| 維度 | Docker (推薦) | Valet / Herd (macOS) | phpStudy / XAMPP (Win) |
|---|---|---|---|
| 環境一致性 | ⭐⭐⭐⭐⭐ 生產級一致 | ⭐⭐⭐ 本機原生 | ⭐⭐ 版本固定、難以複現 |
| 多專案隔離 | 天然隔離 | 自動映射目錄到域名 | 需手動配置虛擬主機 |
| PHP 版本切換 | 換 Image 秒級切換 | valet use php@8.2 秒切 | 介面切換、需重啟服務 |
| 資料庫/快取 | 獨立容器 | 本機安裝或 Docker 附掛 | 內建 MySQL/Redis |
| 學習曲線 | 中(需 Docker 基礎) | 極低 | 極低 |
| 資源佔用 | 較高(含 OS 層) | 極低(原生進程) | 中等 |
version: '3.8'
services:
nginx:
image: nginx:alpine
ports: ["80:80", "443:443"]
volumes:
- ./src:/var/www/html
- ./docker/nginx/conf.d:/etc/nginx/conf.d
depends_on: [php]
php:
image: php:8.2-fpm-alpine
volumes:
- ./src:/var/www/html
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
# 安裝擴展範例
# command: sh -c "docker-php-ext-install pdo_mysql gd bcmath && php-fpm"
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: app
volumes:
- mysql_data:/var/lib/mysql
ports: ["3306:3306"]
redis:
image: redis:alpine
ports: ["6379:6379"]
volumes:
- redis_data:/data
volumes:
mysql_data:
redis_data:
# 啟動
docker-compose up -d
# 進入 PHP 容器執行指令
docker-compose exec php php artisan migrate
docker-compose exec php composer install
# 查看日誌
docker-compose logs -f nginx
# 完整重建(含 volumes 清理)
docker-compose down -v && docker-compose up -d
# 安裝 Valet (需 Homebrew)
brew install php composer
composer global require laravel/valet
valet install
# 專案目錄下
valet park # 將當前目錄註冊為根路徑
valet link myapp # 當前資料夾映射為 myapp.test
valet secure myapp # 自動簽發 TLS 憑證 (HTTPS)
# 切換 PHP 版本
valet use php@8.1
valet use php@8.2
Herd 是 Valet 圖形化升級版,內建 PHP、Nginx、MySQL、Redis、PostgreSQL、Meilisearch,菜單列一鍵管理,支援 Windows (WSL2)。
避坑指南:
# 專案根目錄
composer require --dev phpstan/phpstan phpunit/phpunit rector/rector
# 靜態分析
./vendor/bin/phpstan analyse src --level=5
# 程式碼風格自動修正
./vendor/bin/pint # Laravel 風格
# 或通用
./vendor/bin/php-cs-fixer fix
PHP Intelephense、PHP Debug (Xdebug)、Docker、Remote ContainersInspections → PHP → Code Smelldocker-compose.yml + .devcontainer,新成員 git clone && docker-compose up 即可開工