Composer
Composer
Composer 是 PHP 的套件管理工具,角色等同於 Node.js 的 npm、Python 的 pip、Go 的 go mod。它負責宣告專案需要哪些第三方套件、鎖定每個套件的確切版本、以及把套件安裝到專案目錄裡。
概念位置
接手 PHP 專案時,Composer 是判斷「專案依賴了什麼、版本有沒有已知漏洞」的入口。專案根目錄通常有三個 Composer 相關的檔案:
| 檔案 | 角色 | 進 Git? |
|---|---|---|
composer.json | 宣告依賴(套件名稱 + 版本範圍) | 是 |
composer.lock | 鎖定確切版本(含所有 transitive 依賴) | 是 |
vendor/ | 安裝的套件目錄 | 否(.gitignore 排除、由 composer install 重建) |
可觀察訊號
接手專案時如果根目錄有 composer.json 但沒有 vendor/,代表需要先跑 composer install 才能讓專案運作。如果連 composer.lock 都沒有,代表套件版本沒有鎖定——每次安裝可能拿到不同版本。
設計責任
兩個常用指令的差別:
composer install:按composer.lock安裝確切版本。用於部署和接手——確保每台機器安裝的版本一致。composer update:重新解析composer.json的版本範圍、更新到最新的符合版本、改寫composer.lock。用於主動升級依賴。
接手時的關鍵操作:
composer audit:掃描已安裝套件的已知安全漏洞composer outdated:列出可更新的套件及其最新版本
鄰卡
- .env:Composer 管套件、.env 管設定值,兩者都是 PHP 專案的基礎設施
- php.ini / .user.ini:Composer 需要 PHP CLI 執行,php.ini 的 memory_limit 和 max_execution_time 會影響 Composer 能不能跑完