本文針對 Windows 環境(Windows 10/11、Windows Server),說明 **Yii 2.0 透過 Composer 安裝** 的標準流程。舊版 `yiic` 命令已棄用,請勿參考過時教學。
composer create-project --prefer-dist yiisoft/yii2-app-basic my-project
composer create-project --prefer-dist yiisoft/yii2-app-advanced my-project
cd my-project # Windows PowerShell ./init.bat # 或 Git Bash / CMD init.bat
選擇環境:
0 - Development (開發環境,除錯開啟、快取關閉)1 - Production (生產環境,優化啟用、錯誤隱藏)編輯對應環境的配置檔:
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=yii2_db;charset=utf8mb4',
'username' => 'root',
'password' => 'your_password',
'charset' => 'utf8mb4',
'tablePrefix' => 'tbl_',
'enableSchemaCache' => true, // 生產環境建議開啟
'schemaCacheDuration' => 3600,
'schemaCache' => 'cache',
];
# Basic php yii migrate # Advanced (在專案根目錄) php yii migrate # 或指定配置 php yii migrate --interactive=0
# Basic php yii serve --port=8080 # 訪問 https://localhost:8080 # Advanced (前台) cd frontend php yii serve --port=8080 # 訪問 https://localhost:8080 # Advanced (後台) cd backend php yii serve --port=8081 # 訪問 https://localhost:8081
ServerName yii2-basic.local DocumentRoot "C:/www/my-project/web" AllowOverride All Require all granted # 開發環境關閉快取 php_value opcache.enable 0ServerName yii2-frontend.local DocumentRoot "C:/www/my-project/frontend/web" AllowOverride All Require all granted ServerName yii2-backend.local DocumentRoot "C:/www/my-project/backend/web" AllowOverride All Require all granted
編輯 `C:\Windows\System32\drivers\etc\hosts`:
127.0.0.1 yii2-basic.local 127.0.0.1 yii2-frontend.local 127.0.0.1 yii2-backend.local
server {
listen 80;
server_name yii2-basic.local;
root C:/www/my-project/web;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 或 php-cgi socket
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
| 問題 | 原因 | 解決 |
|---|---|---|
| `composer create-project` 失敗/超時 | 網路連接 Packagist 慢 | 設定中國鏡像:`composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/` |
| PHP 找不到 `php.exe` | 未加入系統 PATH | 系統環境變數 Path 新增 PHP 目錄 (如 `C:\php`),重開終端機 |
| 啟用 `intl` 擴展失敗 | 缺少 ICU 庫或 php.ini 未啟用 | php.ini 取消註解 `extension=intl`,確認 `icu*.dll` 在 PHP 目錄 |
| 資料庫連線失敗 | DSN 錯誤、防火牆、權限 | 檢查 host、port、dbname、user/pass;MySQL 8.0 需 `caching_sha2_password` 相容處理 |
| 遷移報錯 "Table already exists" | 重複執行遷移 | `php yii migrate/down` 回滾或手動刪表後重跑 |
| Asset 發布失敗 (js/css 404) | 目錄權限、連結模式 | 確認 `web/assets` 可寫入;配置 `assetManager` 設定 `linkAssets => true` (開發) 或 `false` (生產) |
my-project/ ├── common/ # 共用代碼 (模型、組件、配置) │ ├── config/ # 共用配置 │ ├── models/ # 共用模型 (User, LoginForm 等) │ └── components/ # 共用組件 ├── frontend/ # 前台應用 │ ├── controllers/ │ ├── views/ │ ├── web/ # 公開入口 (index.php, assets) │ └── config/ ├── backend/ # 後台應用 │ ├── controllers/ │ ├── views/ │ ├── web/ │ └── config/ ├── console/ # 控制台命令 (遷移、定時任務) ├── environments/ # 環境配置模板 ├── vendor/ # Composer 依賴 ├── init.bat / init # 初始化腳本 └── composer.json
Windows 下安裝 Yii 2 核心在於 **Composer 依賴管理、正確的 PHP 環境變數、資料庫配置與虛擬主機設定** 。掌握標準流程,能避開 90% 的坑點,專注於業務開發。建議新專案直接使用 Advanced 模板,為未來擴展預留架構空間。