In this short guide, I will show you how to write a PHP function that takes an associative array of key-value pairs as a function parameter and writes its contents to a .env file.
Convert an PHP Array to .env file
The function has two parameters: the first is the path to the .env file, and the second is the associative array whose contents will be written to the file.
The function formats each key-value pair of the array into the "KEY=VALUE" format, typical of `.env` files.
function arrayToEnvFile($filePath, $array) {
$content = '';
foreach ($array as $key => $value) {
// Ensure the key is a string and the value is scalar (not an array, object, etc.)
if (!is_string($key) || !is_scalar($value)) {
throw new InvalidArgumentException("Invalid key or value type.");
}
// Escape if needed and format the line
$key = strtoupper($key); // Optional: convert keys to uppercase
$value = strval($value); // Convert the value to a string
$value = strpos($value, ' ') !== false ? '"' . $value . '"' : $value; // Enclose the value in quotes if it contains spaces
$content .= "{$key}={$value}\n";
}
// Write to file
if (file_put_contents($filePath, $content) === false) {
throw new RuntimeException("Failed to write to the file at $filePath.");
}
}
// Example usage
$envFilePath = 'path/to/your/.env'; // Replace with the actual path to your .env file
$array = [
'DB_HOST' => 'localhost',
'DB_NAME' => 'example_db',
'DB_USER' => 'user',
'DB_PASS' => 'secret'
];
arrayToEnvFile($envFilePath, $array);
What does this PHP function do?
- The $content string is built by iterating over the provided associative array.
- Keys are converted to uppercase strings, which is a common convention in .env files (this is optional and can be adjusted as per your needs).
- If a value contains spaces, it is enclosed in double quotes.
- The resulting string is written to the file specified by $filePath. If the file doesn't exist, it will be created; if it does exist, it will be overwritten.
This function is a simple way to manage .env file contents programmatically. However, be cautious when handling sensitive data and ensure that the .env file is appropriately secured, especially in a production environment.