Я использую .env
файл в качестве переменных подключения к базе данных. Я не могу поделиться файлом .env
на GitHub, поэтому мне нужно использовать конфигурацию переменных Heroku (я установил их как локальный файл .env
). Но когда я звоню getenv('VAR_NAME')
, я получаю
Невозможно прочитать любой из файлов среды
потому что нет файла .env
. Как я могу получить доступ к переменным Heroku с помощью PHP?
Редактировать: Я использую этот пакет: https://github.com/vlucas/phpdotenv
Вот мой код:
require_once __DIR__ . '../../vendor/autoload.php';
use PDO;
use Dotenv\Dotenv as Dotenv;
public function getConnection()
{
$this->db_connection = null;
try
{
$dotenv = Dotenv::create(__DIR__ . '/..');
$dotenv->load();
$this->db_connection = new PDO("mysql:host=" . getenv('DB_HOST') . ";dbname=" . getenv('DB_DATABASE'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'));
$this->db_connection->exec("set names utf8");
}
catch(PDOException $exception)
{
echo "Connection error: " . $exception->getMessage();
}
return $this->db_connection;
}
__DIR__ . '/..'
- локализация .env
файла
В фреймворке Laravel также есть файл .env
, но есть пост-скрипт, который создает файл .env
, если он не существует:
(composer.json)
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
]
}
Когда я перестал использовать класс Dotenv, он начал работать.