はじめに
laravel/doctor は、Laravelアプリケーションにおける一般的な設定・環境・インフラストラクチャの問題を診断する公式パッケージです。2026年7月28日にv0.1.0がリリースされました。 それぞれの診断(diagnostic)は単一のチェックです。例えば「Laravelがstorageディレクトリに書き込めるか」を検査し、複数のステータスのいずれかを報告します。安全かつ決定的に修復できる場合は自動修正も提供され、アセットビルド失敗のように自動修復できない問題には対応手順(remediation)が提示されます。実行方法
インストール後、doctor Artisanコマンドが登録されます。
--fix オプションを使います。
.env の作成、APP_KEY の生成、本番環境でのデバッグモード無効化、.env の .gitignore 追加、storage:link の作成、storageディレクトリの書き込み権限修復など、決定的なローカル修復をカバーします。
修正機能はCLIとagent出力形式でのみ利用可能です。JSONおよびGitHubレポート形式では、機械可読なレポートがアプリケーションを変更しないよう
--fixは拒否されます。--bail を使うと、失敗またはエラーになった最初の診断で実行を停止します。
診断ステータス
各診断は次のいずれかのステータスを返します。
デフォルトでは
fail または error があると失敗ステータスで終了します。--fail-on=warn で警告でも失敗させたり、--fail-on=never で問題の報告のみに留めることもできます。
診断の選択
クラス名・グループ・パッケージ・パッケージのワイルドカードで診断を選択・除外できます。環境モード
sync キューはローカル開発では妥当なデフォルトですが、本番環境ではキュージョブがWebリクエスト内で同期実行されてしまうことを意味します。このような判断のため、Doctorはアプリケーションを local または production の2つのモードに解決します。
Laravel標準の
local・production・staging という環境名は自動認識されます。それ以外の名前を使う場合は設定ファイルでモードにグループ分けします。
標準診断
Doctorには以下を含む診断スイートが標準で搭載されています。- 環境 —
.envの存在、APP_KEY、PHPバージョン、必要な拡張機能、タイムゾーン - Composer — 依存関係のインストール状態、オートロード最適化、
composer.lockの自動修復 - 設定 — 設定ファイルの読み込み・キャッシュ可否、有効なドライバーが必要とする設定値
- データベース — 接続の到達性、SQLiteファイルの存在、保留中マイグレーションの自動適用
- キャッシュ・キュー・スケジューラ・セッション — 設定済みドライバーの到達性、本番環境外の
syncキュー検出 - ストレージ — デフォルトディスクの到達性、必要ディレクトリの書き込み権限、
storage:linkの存在 - セキュリティ — デバッグモードと環境の整合性、
.envの.gitignore登録、Composer依存関係の監査
独自診断の作成
Laravel\Doctor\Diagnostic を継承し check() メソッドを実装するだけで独自の診断クラスを作成できます。make:diagnostic Artisanコマンドでスキャフォールドも可能です。
APP_KEY の設定を確認し、未設定であれば自動生成する診断の例です。
fixOptions() で選択肢を宣言できます。CLIはこれを選択リストとして表示し、選ばれた値が fix() に渡されます。
Skip — leave unfixed)。現在の選択を保つ表現の方が分かりやすい場合は decline ラベルを指定できます。
診断ヘルパー
多くのアプリケーションやパッケージは同じような種類のチェックを繰り返し書くことになるため、DoctorはLaravel\Doctor\Support 名前空間で頻出パターン向けのヘルパーを提供しています。
Configured ヘルパーは設定値を防御的に読み取ります。診断は設定が壊れたアプリケーションも報告前に例外を投げずに検査できる必要があるため、これらのメソッドは設定リポジトリの型付きアクセサとは違い、想定外の型でも例外を投げません。
ActiveDrivers ヘルパーは、デフォルトのログチャンネルが stack であったりメーラーが failover であったりするラッパードライバーを、実際に使われている具体的なチャンネルやメーラーに解決します。
Details ヘルパーは withDetails() に添付する証拠情報を整形します。Details::bullets() は文字列のリストを箇条書きに、Details::failures() はキー付き失敗メッセージを、Details::processOutput() は完了したプロセスから最も有用な出力ストリームを選択します。
プログラムからの実行
Artisanコマンドを使わずにDoctor::run() を呼び出すこともできます。
fixUsing を設定します。コールバックは修正を提供する失敗診断を受け取り、false でスキップ、true で通常の修正を適用、または修正オプションの値を返してその選択で修正を適用します。修正が適用されると、Doctorはレポートに反映させるため診断を再実行します。
出力形式とAIエージェント対応
Doctorはデフォルトで読みやすいCLI出力を行いますが、JSONやGitHub Actionsアノテーション形式も選択できます。fixable: true の問題は --fix の再実行で修正できます。エージェント外でこのフォーマットを試す場合は AI_AGENT=test php artisan doctor を実行します。
まとめ
laravel/doctor は、php artisan doctor の実行だけでアプリケーションの設定・環境・インフラの問題を素早く洗い出せるツールです。AIコーディングエージェントとの親和性も高く、Laravel PAOと同じ規約でエージェントが解釈しやすい出力を返すため、CI/CDやAIエージェントによる自動修復ワークフローへの組み込みも検討する価値があります。
laravel/doctor リポジトリ
ソースコードと最新情報はこちら。