Установка переменных окружения

Задача
Необходимо установить переменную окружения в сценарии или в настройках сервера. Установка переменных окружения в настройках сервера по принципу хост за хостом позволяет конфигурировать виртуальные хосты раздельно.

Решение
Для установки переменной окружения в сценарии применяется функция putenv():

putenv('ORACLE_SID=ORACLE'); // конфигурируем расширение oci

Функция SetEnv позволяет установить переменную окружения в файле Apache httpd.conf:
SetEnv DATABASE_PASSWORD password

Обсуждение
Преимущество определения переменных в файле httpd.conf состоит в том, что для них можно установить более строгие ограничения прав доступа на чтение, чем в сценарии PHP. Поскольку процессы веб-сервера должны иметь права на чтение файлов PHP, это в целом дает возможность другим пользователям системы просматривать эти файлы.

Сохраняя пароли в файле httpd.conf, можно избежать размещения паролей в общедоступном файле. Кроме того, если есть несколько имен хостов, которые ассоциируются с одним и тем же корневым каталогом документов, то можно настроить сценарий так, чтобы его выполнение зависело от имени хоста.

Например, есть хосты members.example.com и guests.example.com.


Версия для хоста members требует аутентификации и предоставляет пользователям дополнительные права доступа. Версия для хоста guests предоставляет ограниченный набор возможностей, но без аутентификации:

$version = $_ENV['SITE_VERSION'];
// перенаправляем на http://guest.example.com, если пользователю
// не удалось зарегистрироваться
if ('members' == $version) {
if (!authenticate_user($_REQUEST['username'], $_REQUEST['password'])) {
header('Location: http://guest.example.com/');
exit;
}
}
include_once "${version}_header"; // загружаем пользовательский заголовок

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Аутентификация, основанная на cookies
Буферизация вывода в броузер
Взаимодействие в рамках Apache
Идентификация различных броузеров
Настройка обработки ошибок

Вернуться в раздел: PHP / 8. Основы Web