Переменные окружения (Environment Variables, env) - это мощный инструмент для настройки и конфигурирования приложений, включая Bitrix. Они позволяют скрывать конфиденциальную информацию, такую как ключи API, пароли и другие данные, и позволяют управлять настройками вашего проекта более гибко.
В этой статье мы рассмотрим, как использовать переменные окружения в Bitrix для улучшения безопасности и управляемости вашего веб-проекта.
Для начала Вам потребуется установить composer
, который мы уже разбирали в прошлой статье.
Установить библиотеку с помощью команды в SSH консоли:
composer require vlucas/phpdotenv
Далее вам нужно установить переменные окружения на вашем сервере. Это можно сделать в настройках сервера или в файле .env
(его требуется создать в корне сайта).
Например, если у вас есть переменная API_KEY, содержащая строку API ключа для какого-либо сервиса, вы можете установить ее следующим образом:
API_KEY=123321
Далее нам потребуется защитить
.env
файл от любопытных глаз. Для этого нам потребуется добавить правило в файл .htaccess
:
<Files ~ "^.*\.([Ee][Nn][Vv])">
order allow,deny
deny from all
satisfy all
</Files>
После установки данного правила, файл перестанет быть доступным для внешних пользователей. Протестировать это можно в браузере по ссылке: https://вашсайт.ru/.env
Для этого потребуется добавить несколько функций (например в файл init.php
).
<?php
use Dotenv\Dotenv;
/**
* Подключение composer
*/
require __DIR__ . '/../vendor/autoload.php';
/**
* Подключение env (в функции createImmutable укажите путь, где расположен .env файл)
*/
$dotenv = Dotenv::createImmutable(__DIR__ . '/../../');
$dotenv->load();
if (!function_exists('env')) {
/**
* Перевод типа env переменной
*
* @param string $key
* @return bool|mixed|string|null
*/
function env(string $key) {
$value = $_ENV[$key];
if ($value === false) { return $value; }
switch (strtolower($value)) {
case 'true':
case '(true)':
return true;
case 'false':
case '(false)':
return false;
case 'empty':
case '(empty)':
return '';
case 'null':
case '(null)':
return null;
}
if (startsWith($value,'"') && endsWith($value,'"')) {
return substr($value, 1, -1);
}
return $value;
}
}
/**
* Проверяет, начинается ли строка с заданной подстроки
*
* @param string $haystack
* @param string $needle
* @return bool
*/
function startsWith(string $haystack, string $needle): bool {
$length = strlen($needle);
return substr($haystack, 0, $length) === $needle;
}
/**
* Проверяет, заканчивается ли строка с заданной подстроки
*
* @param string $haystack
* @param string $needle
* @return bool
*/
function endsWith(string $haystack, string $needle): bool {
$length = strlen($needle);
if(!$length) { return true; }
return substr($haystack, -$length) === $needle;
}
Если вы используете PHP > 8 версии, то можно убрать функции startsWith и endsWith и заменить их на str_starts_with и str_ends_with.
После всех вышеперечисленных манипуляций - функционал переменных окружения готов и у Вас есть возможность использовать его где угодно с помощью функции env:
echo env('API_KEY');
Использование переменных окружения в Bitrix - это хороший способ улучшить безопасность, управляемость и портабельность вашего веб-проекта. Они позволяют хранить конфиденциальные данные в защищенном месте и легко настраивать приложение для разных сред выполнения.
Не забывайте, что правильное управление переменными окружения и их безопасность - ключевой момент в обеспечении надежности вашего проекта.
Напишите нам и мы свяжемся с вами сразу после ознакомления с запросом (в рабочее время ~10 минут ожидания)