When developing live service but requiring continuous maintenance/development in agile manner, codes needs to be handled by the operation environment (staging/production) - you may able to add development environment by your situation. In that case include_path is super useful.
The methodology I use is including environment file based in PHP like below:
<?php /* Copyright by Chun Kang (ck@qsok.com) * * @file __env.php * @brief environments for staging and production \n * @author Chun Kang (ck@qsok.com) * * * @notes * 2018.11.13 created * **/ if (! defined('__CK_ENV__')) { // Basic DB Library ------------------------------------------------------------------------------------------------------ define( '__CK__ENV__', 'RUNTIME_ENVIRONMENT_ESTABLISHED'); if (preg_match( "/staging/", getcwd())) // checking if the environment is staging or not by the current working directory { // define include path to load necessary from staging environment set_include_path( ".:/web/staging_server"); } else { set_include_path( ".:/web/production_server"); error_reporting(0); // turn off all error reporting } // End of Basic DB Library ------------------------------------------------------------------------------------------------------ } ?>
Note set_include_path() will help you to include necessary modules by relative path easily, so you don't need to worry about remembering staging / production directory path.
If you want to hide __env.php somewhere in the system, you can simply add that condition to php.ini as following:
include_path = ".:/lib/php/environment"
If your environment is Windows, it should be like below:
include_path = ".;/lib/php/environment"
Once above is done, you can include __init.php without its detailed path anywhere in your system like below
require_once "__init.php";