昨天我們一起練習了模組開發,體驗了 Magento 的擴充方式。
不過在開發的過程中,有一件事情常常會遇到:我改了程式,卻發現前台/後台沒變!
這時候,十之八九就是忘了下 Magento 的指令 了。
今天我們就來完整整理:
因為我們的環境是用 Docker Compose 建立的,所以 Magento 的 CLI 不是直接在主機執行,而是要先「進到容器裡」。
假設你的服務名稱是 php
(通常在 docker-compose.yml
裡會有寫),那你可以這樣下:
docker-compose exec php bash
進去後就能使用:
bin/magento ...
或者偷懶一點,直接在主機上:
docker-compose exec php bin/magento ...
👉 記住:之後提到的所有 bin/magento
指令,都是要在容器裡跑的。
Magento 自帶一個命令工具,路徑在:
bin/magento
它能做很多事:清快取、升級、部署、重新索引、啟停模組… 幾乎所有日常維護都靠它。
bin/magento setup:check
👉 檢查 PHP、DB、目錄權限是否正確。
bin/magento module:status
👉 看目前有哪些模組啟用、停用。
啟用模組:
bin/magento module:enable Vendor_Module
停用模組:
bin/magento module:disable Vendor_Module
這是最常見的:
bin/magento setup:upgrade
👉 用來更新系統設定、執行資料庫 migration(db_schema.xml
/ InstallSchema
/ UpgradeSchema
等)。
當你新增/修改模組、或是調整設定檔案時,都要跑這個。
小提醒:
如果你只改了 PHP 邏輯(例如 Plugin 攔截 function),通常不需要跑 upgrade;
但如果有動到 etc/db_schema.xml
或 etc/config.xml
預設值,那就一定要跑。
查看快取狀態:
bin/magento cache:status
清快取:
bin/magento cache:clean
刪快取:
bin/magento cache:flush
⚠️ clean
和 flush
差別:
clean
:只清 Magento 知道的 cache。flush
:直接砍整個快取系統(包含其他應用程式的 cache)。Magento 用 indexer 加速查詢,如果你改了商品 / 分類,偶爾需要手動重建:
bin/magento indexer:reindex
查看索引狀態:
bin/magento indexer:status
開發或上線時常用:
bin/magento setup:static-content:deploy -f
👉 會把翻譯、CSS、JS、圖片資源部署到 pub/static
。
如果你切換 mode(developer / production)後,前端 CSS/JS 出不來,多半要跑這個。
bin/magento setup:di:compile
👉 在 production mode 下必跑,會重新生成 generated
裡的 class。
在專案中,如果我要更新 Magento(例如:改了程式、調整設定、改 phtml、di.xml…),我通常會照這個順序來打指令:
# 1) 更新系統、執行資料庫 schema/config
sudo bin/magento setup:upgrade
# 2) 重新編譯依賴注入(改了 di.xml 要跑這個)
sudo bin/magento setup:di:compile
# 3) 部署靜態資源(改了 phtml / JS / CSS 要跑,加 -f 強制覆蓋)
sudo bin/magento setup:static-content:deploy -f
# 4) 重新索引(確保商品、分類、價格等資料更新)
sudo bin/magento indexer:reindex
# 5) 清掉整個快取(避免殘留舊的 config、layout)
sudo bin/magento cache:flush
# 6) 生成 Magepack 資源(最佳化 JS bundle,加速前端)
sudo magepack generate \
--cms-url="http://your-magento-site.local/" \
--category-url="http://your-magento-site.local/category.html" \
--product-url="http://your-magento-site.local/sample-product.html"
# 7) 打包 Magepack bundle
sudo magepack bundle
# 8) 再清快取一次(確保 Magepack 資源生效)
sudo bin/magento cache:clean
# 9) 修正檔案權限(避免部署後檔案/資料夾權限錯誤)
sudo chown -R hamilton:www-data .
di.xml
或新增 class,需要重新生成。今天我們完整看了 Magento 常見指令,還加上了 專案實戰更新流程。
不管是日常開發還是正式上線,照著這個順序跑,基本上就能避免大部分「改了程式卻沒生效」的問題。