Personally, for most of my bigger projects I use both file and database solutions combined together (and i know a lot of people do that).
- Configuration table in database to store all parameters that can be configured via CMS / Admin Panel.
- One bigger INI / YAML file to keep base configuration of the application.
- Many smaller INI / YAML files for modules / functionality / routes etc.
These INI / YAML files are kept out of code versioning, changed rarely and also cached.
For getting these values inside code i use only one ConfigManager
class with priorities like database value -> partial file value (dependant on module etc.) -> main file value.
P.S. YAML (native for Symfony) is really good, i wouldn't be changing it to INI if i had it already implemented.