Я пытаюсь передать переменные окружения в файл settings.php для конфигураций базы данных в Drupal, я могу получить доступ к переменным окружения, сохранить их в переменных и передать эти переменные в массив базы данных в settings.php
Если я распечатываю массив в консоль, он печатается нормально, но при доступе к веб-сайту журнал Apache выдает ошибку ниже
Я попытался напрямую передать переменную env с помощью getenv () Передача переменной env в другую переменную и передача этой новойпеременная в массив базы данных Преобразование переменной в кодировку UTF-8 и передача ее в массив базы данных
Если я жестко закодирую значения конфигурации базы данных, она работает нормально, но когда я пытаюсь прочитать ее через переменную env, она не работает!Я не могу понять, почему не работает, когда значения проходят, кажется, в порядке
стек журнала ошибок
Drupal\\Core\\Database\\DatabaseAccessDeniedException: SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) in /var/www/html/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php on line 427
Код в Settings.php
$vars = array(
'DB_HOST',
'DB_USERNAME',
'DB_PASSWORD',
'DB_PORT'
);
foreach($vars as $var) {
if(!isset($_ENV[$var]) && getenv($var)){
$_ENV[$var] = getenv($var);
}
}
$username = mb_convert_encoding($_ENV['DB_USERNAME'], "UTF-8");
$password = mb_convert_encoding($_ENV['DB_PASSWORD'], "UTF-8");
$host = mb_convert_encoding($_ENV['DB_HOST'], "UTF-8");
$port = mb_convert_encoding($_ENV['DB_PORT'], "UTF-8");
$databases['default']['default'] = array (
'database' => 'a_16a7f4a6-74a2-4066-aaa6-c0f4029f9a9f',
'username' => $username,
'password' => $password,
'prefix' => '',
'host' => $host,
'port' => $port,
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
print_r($databases);
Вывод, когда я просто запускаю php файл, он отображает
Array
(
[default] => Array
(
[default] => Array
(
[database] => a_16a7f4a6-74a2-4066-aaa6-c0f4029f9a9f
[username] => root
[password] => root
[prefix] =>
[host] => localhost
[port] => 3306
[namespace] => Drupal\Core\Database\Driver\mysql
[driver] => mysql
)
)
)