@disconnect-ed

Как подключить .env файл в проект php?

Здравствуйте! Я в php совсем новичок, пытаюсь изучить основы. До этого работал только с js. Не могу понять как подключить .env переменные в проект...

<?php

require_once '../vendor/autoload.php';

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__   .   '../.env');
$dotenv->load();

echo $_ENV['DB_HOST'];

class Database{
    private $host = $_ENV['DB_HOST'];
    private $db_name = "php-rest-api";
    private $username = "root";
    private $password = "root";
    public $conn;
// get the database connection
    public function getConnection(){
        $this->conn = null;
        try{
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->exec("set names utf8");
        }
        catch(PDOException $exception){
            echo "Connection error: " . $exception->getMessage();
        }
        return $this->conn;
    }
}
?>


$_ENV ничего не выдает. Использую пакет vlucas/phpdotenv. Я в ооп плохо разбираюсь, скорее всего так подключать нельзя.
Поэтому прошу помощи у вас)
  • Вопрос задан
  • 1802 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Почти всё правильно.
Только при инициализации нужно указывать не файл, а директорию.
Если файл у вас имеет название по умолчанию, то есть .env, то без второго параметра

$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));


При такой записи файл .env должен располагаться на один уровень выше файла, в котором вы это написали.

Если хотите по другому файл назвать, то новое имя следует передать во втором параметре, без точки.

$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__), 'my_env');


Теперь файл должен располагаться там же, но называться .my_env
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы