前言
laravel/doctor 是診斷 Laravel 應用中常見設定、環境、基礎架構問題的官方套件。2026 年 7 月 28 日發佈 v0.1.0。 每個診斷(diagnostic)為單一檢查項目。例如檢查「Laravel 是否能寫入 storage 目錄」,並回報多種狀態之一。若能安全且明確地修復,會提供自動修正;若如 asset build 失敗這類無法自動修復的問題,則會提供處理步驟(remediation)。執行方式
安裝後會註冊doctor Artisan 指令。
--fix 選項。
.env、產生 APP_KEY、於正式環境關閉 debug 模式、將 .env 加入 .gitignore、建立 storage:link、修正 storage 目錄寫入權限等在本機明確可完成的修復。
修正功能僅於 CLI 與 agent 輸出格式可用。JSON 與 GitHub 報告格式為避免可機讀報告改動應用,
--fix 會被拒絕。--bail 可在遇到第一個 failed 或 error 的診斷時停止執行。
診斷狀態
每個診斷會回傳以下狀態之一。
預設下若有
fail 或 error 會以失敗狀態退出。可用 --fail-on=warn 讓警告也視為失敗,或 --fail-on=never 只回報問題不影響 exit code。
選擇診斷
可依類別名稱、群組、套件或套件萬用字元選擇或排除診斷。環境模式
sync 佇列在本機開發是合理預設,但在正式環境代表佇列 Job 會在 Web 請求內同步執行。為此類判斷,Doctor 會將應用解析為 local 或 production 兩種模式。
Laravel 標準的
local、production、staging 環境名稱會自動判斷。若使用其他名稱,可在設定檔以群組指派模式。
標準診斷
Doctor 內建包含下列的診斷套組。- 環境 —
.env是否存在、APP_KEY、PHP 版本、必要擴充、時區 - Composer — 相依安裝狀態、autoload 最佳化、
composer.lock自動修復 - 設定 — 設定檔可否載入與快取、可用 driver 需要的設定值
- 資料庫 — 連線可達性、SQLite 檔案存在、自動套用待處理 migration
- 快取、佇列、排程、Session — 已設定 driver 的可達性、正式環境以外偵測
sync佇列 - 儲存 — 預設 disk 可達性、必要目錄的寫入權限、
storage:link存在 - 安全 — debug 模式與環境一致性、
.env是否列在.gitignore、Composer 相依審計
自訂診斷
繼承Laravel\Doctor\Diagnostic 並實作 check() 方法即可建立自訂診斷類別。也能用 make:diagnostic Artisan 指令產生 scaffold。
APP_KEY 設定,若未設定則自動產生的診斷範例。
fixOptions() 宣告選項。CLI 會以選單方式呈現,選中的值會被傳入 fix()。
Skip — leave unfixed)。若「保留目前選擇」的說法更清楚,可指定 decline 標籤。
診斷 Helper
由於許多應用或套件會重複撰寫相似的檢查,Doctor 於Laravel\Doctor\Support 命名空間提供常見情境的 helper。
Configured helper 會防禦式地讀取設定值。因為診斷必須在應用設定損壞的情況下也能在回報前不拋出例外,因此這些方法與設定 repository 的型別存取器不同,不會因為非預期型別而拋例外。
ActiveDrivers helper 會把預設 log channel 為 stack、mailer 為 failover 等 wrapper driver,解析為實際使用的具體 channel 或 mailer。
Details helper 用來整理要附加到 withDetails() 的證據。Details::bullets() 把字串清單轉為條列、Details::failures() 產生帶鍵值的失敗訊息、Details::processOutput() 從已完成的 process 選出最有用的輸出串流。
從程式呼叫
也可以不用 Artisan 指令,直接呼叫Doctor::run()。
fixUsing。Callback 會接收提供修正的失敗診斷,回傳 false 表跳過、true 表套用一般修正,或回傳修正選項值以該選擇套用修正。修正被套用後 Doctor 會重新執行該診斷以反映到報告。
輸出格式與 AI Agent 對應
Doctor 預設輸出易讀 CLI 格式,也可選擇 JSON 或 GitHub Actions annotation 格式。fixable: true 的問題可用 --fix 再跑一次修正。若想在 Agent 之外試這個格式,可執行 AI_AGENT=test php artisan doctor。
總結
laravel/doctor 只要執行 php artisan doctor 就能快速找出應用在設定、環境、基礎架構上的問題。它與 AI 撰碼 Agent 相容,且以與 Laravel PAO 相同規範輸出對 Agent 友善的格式,值得考量納入 CI/CD 或由 AI Agent 自動修復的工作流程。
laravel/doctor 儲存庫
原始碼與最新資訊請見此處。