within a PHP project, what would be the recommended way of creating configuration files and reading them within the app; configuration files that would be deployed with different content to staging vs. production servers for instance.
I would recommend looking at how the Symfony project injects Parameters for different systems. Symfony's Config Component can be installed as a standalone library and integrated with most projects.
A default parameters.yml.dist is distributed with the codebase but upon system install customised parameters.yml can either be generated manually on the command line or automatically using a deployment process. This avoids holding sensitive and mutable infrastructure information in your codebase.
Symfony Introduction to Parameters
Symfony Config Parameters Best Practices
Combining this with a docker & vagrant setup will enable configuration options to be mirrored across your environment platforms (production, development, testing). A good tutorial on doing this for PHP frameworks can be found here.