Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Self Diagnosis Laravel Package

beyondcode/laravel-self-diagnosis

Run a series of checks to verify your server meets Laravel's requirements. This package provides an artisan command and web interface to diagnose PHP version, extensions, folder permissions, and other environment issues before deployment. Catch problems early and ship with confidence.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. beyondcode/laravel-self-diagnosis is an opt-in verification utility, not an architectural component. The service provider registers an Artisan command and (by default) an HTTP route that renders pass/fail output for a configurable check list — PHP version, required extensions, writable paths, .env presence, app key, storage symlink, database connectivity. It brings no migrations, no persistence, no queue or event coupling, and nothing on the request path. From a TPM's seat that is the ideal shape for a peripheral dependency: outside the domain model, incapable of entangling itself in business logic, and removable in an afternoon (one provider registration, one published config file). Plan it as a pre-flight readiness utility — a checklist you can execute — not as observability, monitoring, or a health endpoint with an SLA behind it.

Integration feasibility. Composer install with package auto-discovery, a publishable config, and an extensible check list (custom checks are plain classes or closures). The work is an afternoon, not a sprint: install, publish config, select the checks that are meaningful for our environments, add domain-specific custom checks where preconditions exist, gate the route, wire the command into a post-deploy smoke step. No data migration, no API surface to design, no cross-team contract to negotiate. The only genuine coordination cost is the access-control decision — and that is a decision, not engineering effort.

Technical risk. Low on runtime, moderate on supply chain, and one real product risk.

  • Supply chain: single-maintainer lineage, 0 dependents recorded. Zero dependents means negligible blast radius if it breaks, but also little external battle-testing — we are near the frontier of its usage. 1,447 stars and MIT licensing are reassuring on paper, not evidence of production hardening.
  • Release hygiene: the 3.1.0 headline is Laravel 13.x compatibility delivered as a Laravel Shift PR, which typically touches CI matrix and composer.json constraints. Verify the runtime constraint admits ^13.0, not merely that CI tested against it — the silent-downgrade trap is the realistic failure mode during composer update. The second PR in the release is labeled only "Dev by @mechelon," opaque enough that a check, middleware, or config change could be hiding behind a maintenance-sounding title. Not a blocker for a minor bump; a reason to read the diff.
  • Product risk — disclosure: the package introspects and renders environment detail (PHP version, extension inventory, filesystem layout) to anyone who can load the page. That is our configuration decision, not a package defect, but it is the single path by which this convenience becomes a security finding. The access policy needs an owner and a task, not an afterthought.

Key questions.

  • What does PR #123 ("Dev") actually change — checks, route middleware, config schema, or CI only?
  • Does composer.json widen illuminate/* / laravel/framework to admit ^13.0, or is compatibility asserted without a constraint change?
  • Has default middleware or authorization on the diagnostic route changed, and is the route still registered by default outside local?
  • Do new or modified checks behave identically under CLI and FPM? Extension and ini state commonly differ between SAPIs.
  • What is the realistic maintenance runway, given single-maintainer lineage and a headline feature that is an automated compatibility PR?
  • Can a throwing custom check take down the request path, or is failure contained to that individual check's result?

Integration Approach

Stack fit. Any Laravel application on a supported major; 3.1.0 extends the tested matrix through Laravel 13.x. No overlap with application dependencies beyond the framework itself, so dependency-graph conflict risk is negligible. Read the PHP floor off the resolved Laravel 13 requirement rather than inferring it from the changelog or CI matrix. Note the opportunity: 14.75 sub-score: this is a narrow, single-purpose tool with no expansion surface — which is exactly the point, and why it should be scoped as a bounded utility rather than a platform bet.

Migration path. From 3.0.0 this is a composer update plus a re-run of php artisan diagnose. No migrations, no asset publishing, no contract changes implied. If the config was already published, diff config/self-diagnosis.php against the vendor copy afterward — Laravel's merged config applies new keys silently, convenient but capable of hiding a changed default. For a first adoption the path is the same shape: install, publish, customize, gate, wire into pipeline.

Compatibility. Pin to tag 3.1.0, never a branch. Confirm the resolved composer.json constraints against our actual PHP/Laravel pairing before merge — the realistic failure mode is a silent downgrade to an older tag during composer update, which looks like success. Verify the SAPI that matters: a green CLI run does not guarantee a green FPM run.

Sequencing. Four phases, each independently valuable:

  1. Install and baseline — Composer install, publish config, run the command in dev/staging, capture the unmodified output as a baseline.
  2. Gate before exposure — set the access policy (auth middleware, IP allowlist, or environment-gated off in production) and prove the off-in-production path works. Do this before the route exists anywhere a scanner can reach it.
  3. Customize — prune irrelevant checks, add domain-specific ones, document the resulting list in the runbook so the checklist has a source of truth.
  4. Pipeline wiring — add php artisan diagnose to the post-deploy smoke step and to the release checklist as a named go/no-go artifact. This is the step that converts an installed dependency into realized value; installed-but-never-executed is the standard failure mode of this adoption.

Operational Impact

Maintenance. Low and well-bounded. Upkeep appears driven largely by automated compatibility PRs, which is a positive signal for framework currency and a neutral signal for depth of maintenance. Budget a recurring line item: read the diff on minor bumps rather than trusting release notes, and re-diff the published config after each bump. Plan the exit rather than assuming a patch lands the day a future Laravel major ships — removal is one provider registration plus one config file, which is the right risk posture for a non-critical-path dependency.

Support. This is the strongest operational lever. A meaningful share of Laravel support load is misconfiguration rather than code defects: stale config cache, non-writable storage/, wrong app key, missing storage symlink, unreachable database. One diagnostic surface shortens "the app is broken" into "we know which subsystem is failing," and lets support agents run the check before escalating to engineering. Instrument it — tickets deflected, time-to-triage, first-response resolution rate — so the value is measured rather than asserted. For self-hosted or on-prem installs, an authenticated "run diagnostics" page is a product feature we would otherwise scope, design, and maintain; here it is an integration task.

Scaling. No scaling surface of its own: no background jobs, no storage, no per-request cost. The only scaling consideration is organizational — the check list is shared configuration, so once multiple teams rely on it, changes need a review path. Treat the published config as owned code, not as a local convenience. If the diagnostic page is customer-facing for self-hosted installs, add load expectations for the page itself (it runs live checks including database connectivity) and confirm check timeouts are bounded.

Failure modes. Enumerate them in the runbook, because each has a different response:

  • False green — the check list diverges from what actually matters in an environment; mitigated by reviewing the list at each release, not once at install.
  • Cross-SAPI blind spot — CLI passes, FPM fails; mitigate by running diagnostics in the SAPI that serves traffic.
  • Silent downgrade — composer update resolves an older tag; mitigate by pinning and asserting the resolved version in CI.
  • Disclosure — route reachable by someone who should not see environment internals; mitigate with gating verified before exposure, and periodically re-verified since the route registration default is the package's to change.
  • Throwing custom check — a bad check degrades or breaks the diagnostic surface itself; confirm containment before adding custom logic.
  • Stale dependency on a framework major — the exit plan above is the mitigation, not a patch.

Ramp-up. Essentially zero for engineers who already know Laravel: a command they have run before and a page they can read. Onboarding is the secondary use case — a new engineer runs diagnostics to learn an environment's expected state instead of asking a senior. The ramp-up cost that does exist is policy, not skill: whoever owns the route's access control must decide and document it before the first non-local deployment. Assign that owner at kickoff, record the gating decision in the runbook, and treat "diagnostics green" as a named artifact in release reviews so the checklist has a paper trail rather than a memory.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin