What are some best practices for handling server configurations in PHP scripts for different environments?

When working with PHP scripts that need to be deployed in different environments (such as development, staging, and production), it is important to handle server configurations in a way that allows for easy switching between environments without modifying the code. One common approach is to use environment variables to define configuration settings for each environment. By checking the current environment and loading the appropriate configuration settings dynamically, you can ensure that your PHP scripts work correctly in any environment.

// Define environment-specific configuration settings
$env = getenv('ENVIRONMENT');

switch ($env) {
    case 'development':
        $dbHost = 'localhost';
        $dbUser = 'root';
        $dbPass = 'password';
        $dbName = 'dev_database';
        break;
    case 'staging':
        $dbHost = 'staging.example.com';
        $dbUser = 'staging_user';
        $dbPass = 'staging_password';
        $dbName = 'staging_database';
        break;
    case 'production':
        $dbHost = 'production.example.com';
        $dbUser = 'production_user';
        $dbPass = 'production_password';
        $dbName = 'production_database';
        break;
    default:
        die('Invalid environment');
}

// Use the configuration settings in your PHP script
$connection = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
if ($connection->connect_error) {
    die('Connection failed: ' . $connection->connect_error);
}