Home > Net >  PHP - Load data from file with format X=Y
PHP - Load data from file with format X=Y

Time:02-08

I have a file without any format called .env.

All the values are stored like this: X=Y

My supervisor told me to load this data into my PHP script, I need the values as array. He said I can do it because the file is build like an ini file. But there are no sections.

I tried it like this:

$ini_array = parse_ini_file("../../.env");    // Output: false
$data = include("../../.env");                // Output: 1 -> prints the content of the file into the document

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:WVS0jXq4FBEOHEt2 K3AxyLCvTgq5L/dMhiFd5HZg7Q=
APP_DEBUG=true
APP_URL=http://api-konfigurator.local

JWT_SECRET=5PdNYddJuntDfbErQBg0vnUwwNCJiDy8hc1QMNAFaAWsdKJv2fe6m3ueLbYdYOk3

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=x
DB_USERNAME=y
DB_PASSWORD=z

CodePudding user response:

It should be fairly straightforward to parse a file in the format mentioned but complicated slightly by some lines potentially including multiple = signs, such as for APP_KEY

That said, perhaps the following might help.

$filepath='c:/temp/fakeini.txt';


$data=array();
$lines=file( $filepath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
foreach( $lines as $index => $line ){
    if( !empty( $line ) ){
        $count=substr_count( $line, '=' );
        if( $count > 1 ){
            $pos=strpos($line,'=');
            $param=substr($line,0,$pos);
            $value=substr($line,$pos 1);
        }else{
            list( $param, $value )=explode( '=', trim( $line ) );
        }
        $data[ $param ]=$value;
    }
}

which yields an array like this:

Array
(
    [APP_NAME] => Laravel
    [APP_ENV] => local
    [APP_KEY] => base64:WVS0jXq4FBEOHEt2 K3AxyLCvTgq5L/dMhiFd5HZg7Q=
    [APP_DEBUG] => true
    [APP_URL] => http://api-konfigurator.local
    [JWT_SECRET] => 5PdNYddJuntDfbErQBg0vnUwwNCJiDy8hc1QMNAFaAWsdKJv2fe6m3ueLbYdYOk3
    [LOG_CHANNEL] => stack
    [DB_CONNECTION] => mysql
    [DB_HOST] => localhost
    [DB_PORT] => 3306
    [DB_DATABASE] => x
    [DB_USERNAME] => y
    [DB_PASSWORD] => z
)

CodePudding user response:

.env file is to create environment variables. You can look at public projects like https://github.com/vlucas/phpdotenv

You can create your own php dotEnv class with this : https://dev.to/fadymr/php-create-your-own-php-dotenv-3k2i

After loading in environment variables, you will have all in $_ENV array.

  •  Tags:  
  • Related