larapack/config-writer
Larapack Config Writer lets Laravel apps persist configuration changes at runtime, updating, adding, or removing config keys in files. Useful for editable settings in admin panels without manual file edits.
Package posture: Archived, unmaintained, last release 2016-04-28. This is the dominant fact of the evaluation. larapack/config-writer targets the Laravel 5.x era (PHP 5.x) and has received no compatibility work, security patches, or dependency refreshes since. The 39-star footprint and low opportunity score reflect that the ecosystem has moved on — not that the problem space disappeared.
Architecture fit: Poor for any modern Laravel deployment, and the misfit is structural rather than cosmetic.
config() is persistence to disk — it rewrites config/*.php at runtime. That directly contradicts the platform convention that config is deploy-time and immutable: env vars, secret managers, and container-fixed images are the supported path.Integration feasibility: Low without a fork.
illuminate/support constraints, and verify package auto-discovery or manual provider registration.array_get/array_set/str_* global helpers that 2016-era packages lean on; any such usage is a hard runtime failure, not a deprecation.var_export-style literal serialization (safe) or string interpolation (injection risk). This must be read in the source, not assumed.Technical risk: High.
php artisan config:cache makes file edits invisible, and opcache/realpath cache can serve stale config per node. Persistence ≠ effect.Key questions for the requirement owner:
Stack fit: Only viable on a legacy Laravel 5.x monolith hosted on long-lived, writeable servers where the config directory is already mutable. On any Laravel 6+ or containerized stack, do not integrate — replace.
Migration path: Preference order, strongest first.
spatie/laravel-settings or a bespoke settings table hydrated into config in a service provider. Gets persistence, auditability, per-tenant scoping, and scale-out for free.composer path/VCS repository) only if the existing code cannot be touched at acceptable cost. Fork scope: PHP 8/Laravel version constraints, helper-removal fixes, atomic writes, input validation, and a test suite that did not previously exist.Compatibility: Verify explicitly — supported PHP range, illuminate/* constraints, helper function usage, provider registration mechanism, and whether the write path survives config:cache. Assume nothing resolves; prove it in a throwaway branch.
Sequencing:
SettingsService interface in front of the call sites — this is the swap seam and the only piece worth building regardless of which path is chosen.Maintenance: Upstream maintenance is zero and will stay zero. Any adoption converts into an internal ownership line item — fork upkeep, PHP upgrade churn, and security review on every framework bump. This cost is small in hours but permanent.
Support: No upstream escalation path, no issue tracker response, no security advisories. All incidents route to whoever owns the fork. Budget a named owner or do not adopt.
Scaling: Breaks on horizontal scale. Writes are node-local; N app servers means N divergent configs. Autoscaling, blue-green, and redeploy-based recovery all reset or split the state. Caching layers introduce per-node staleness on top of that. This is the sharpest operational constraint and alone justifies replacement in any multi-instance deployment.
Failure modes:
config:cache or opcache — the UI reports success; the application keeps serving the old value. Hard to detect, harder to explain.Ramp-up: Low to learn the API (it is a small package), moderate to operate safely. An engineer can call it in an hour; understanding that the write may not take effect, may not survive a deploy, and may not be visible on other nodes takes a runbook and a design review. If a fork is required, add one to two engineer-weeks for compatibility work, tests, and the settings abstraction that should have existed in the first place.
Recommendation: Do not adopt for new work. Treat as technical debt where already present. Fund the SettingsService seam and a database-backed settings store instead, and add the CI check that keeps config files immutable. The package solves a real problem — runtime-settable configuration — with an approach the platform has since standardized away from; the correct decision is to adopt the requirement and reject the implementation.
How can I help you explore Laravel packages today?