To solve this I have created this bundle, which tries to offer an easy way to create user changable and still type-safe and DX friendly settings system. Unlike many other bundles, which have a similar goal, jbtronics/settings-bundle uses classes with metadata annotations to define settings. This way you can utilize all of PHP features to get typesafe settings and use existing tools in IDEs, etc. for refactoring, etc.
The bundle tries to be as flexible and extensible as possible, and supports different storage backends and datatypes and allows even for custom implementations of these.
It can use symfony/forms and symfony/validator for easy form generation and validation and have a versioning system including migrations, if you want to change the structure of your settings.
More information can be found at the Github repo: https://github.com/jbtronics/settings-bundle