DEV Community

loading...

How to read dot files with PHP?

Ashok Mohanakumar
INTP | Full Stack Dev
・1 min read

Is there a practice of using dot files to store config info and constants in php? If so, how do I parse them? If not, then what would be a good way to isolate and store sensitive info like db passwords, or other config info?

Discussion (6)

Collapse
matheus profile image
Matheus Calegaro

Yes, there is! Some frameworks like Laravel and Symfony have .env file support out of the box.

In your project, you could use vlucas/phpdotenv, which does exactly what you want and it's pretty simple to implement, check it out:

1 - Install it using Composer by typing the following command on your terminal:

composer require vlucas/phpdotenv

2 - Now let's configure it on your application's starting point (I'll assume it is index.php):

<?php
// index.php

include 'vendor/autoload.php';

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

// your code goes here...

3 - Cool, we're almost there! Now create the .env file at your project's root directory and populate it with your configs like this:

DB_USER="user"
DB_PASSWORD="ultraSecurePassword"
DB_NAME="awesome_db"
FOO="bar"

4 - Finally, to retrieve the env values:

<?php
// db.php (naming things is hard)

$user = env('DB_USER');
// OR
$user = getenv('DB_USER');
// OR
$user = $_ENV['DB_USER'];
// OR EVEN
$user = $_SERVER['DB_USER'];

Hope it helps! ;)
(if there's any typo, feel free to correct me, i'll appreciate)

Collapse
ashokcodes profile image
Ashok Mohanakumar Author

Awesome! Everything I was looking for!!! Thanks a bunch

Collapse
vlasales profile image
Vlastimil Pospichal • Edited

.htconfig.ini

[MySQL]
dsn = "mysql:host=localhost;dbname=myDatabase"
user = "username"
password = "Password"

index.php

<?php
$config = parse_ini_file('.htconfig.ini' , true);
$db = new MyPDO($config['MySQL']);
Collapse
ashokcodes profile image
Ashok Mohanakumar Author

Wow! thanks, I looked into this. It looks better than using normal dot files since there is a built in function to read ini files. Thanks a lot

Collapse
kip13 profile image
kip • Edited

Don't forget add to .gitignore(if you use git) this dot files !

Collapse
ashokcodes profile image
Ashok Mohanakumar Author

Yes yes...always :D