Переменные окружения. Использование %ENV.

назад

Переменные окружения - это скрытые значения, к которым Web-сервер позволяет обращаться скриптам CGI. Web-сервер работает в своём собственном окружении, которое включает и создаёт эти переменные. Это означает, что Web-сервер имеет данные о выполняемых процессах и может применять их для обслуживания запросов. Web-клиент также передаёт Web-серверу некоторые данные, которые сохраняются в переменных окружения.

Выяснять, что именно сервер делает с каждой из этих переменных - не наша задача. Эта статья лишь объясняет, как получить и использовать эти переменные с скриптах CGI (следует отметить что переменные окружения также можно задавать). Все єти переменные позволяют получить информацию о посетителе (Web-клиенте), произведённом запросе и самом Web-сервере.

Что такое "окружение" в точном смысле слова? Вам может быть знакомо окружение оболочки, которое содержит такую информацию, как пути к программам, домашний каталог, редактор и т.д. и создаёт среду в которой вы работаете. Можно прибегнуть к другой, менее мпециальной аналогии. Представьте, что окружение - это ваше рабочее место. Мой рабочий кабинет - это "оболочка". В "процессе" работы моё окружение составляют такие вещи, как телефон, почтовый адрес, стол, освещение, компьютер, стул и различные принадлежности и материалы. Всё это можно рассматривать как переменные окружения. Некоторые из них, например, номер телефона, компьтер и стол, не будут изменяться. Другие, такие как используемые материалы, освещение или стул, при необходимости могут быть изменены. Это очень похоже на окружение Web-сервера и его переменные. Окружение содержит известный набор переменных, которые могут (как освещение) или не могут (как номер телефона) изменяться. Некоторые используются больше, чем другие (я работаю с компьютером больше, чем с карандашом), а некоторые используются почти всё время (как мой стул).

Определённая информация в окружении, как, например, SERVER_NAME, устанавливается при запуске Web-сервера и не изменяется в ходе его работы. Некоторые переменные окружения, как имя сервера и программное обеспечение, задаются самим Web-сервером. Некоторые переменные задаются пользователем, под учётной записью которого выполняется процесс сервера (обычно пользователем nobody). К ним относятся, например, PATH. Другие переменные определяются информацией, передоваемой Web-клиентом на сервер - например, агент пользователя и удалённый IP. Переменные окружения, которые создаются данными, передаваемыми клиентом на Web-сервер, всегда представляют информацию о самом клиенте.

Имейте в виду, что Web-клиенты могут направлять неверную информацию. Они не могут делать это преднамеренно, но некоторые пользователи создают собственные специальные клиенты, чтобы изменит эту информацию. Это не обязательно бывает повседневной проблемой для Web-сайта, но не мешает помнить, что эта информация может быть неверной. Независимо от того, кем установлены переменные окружения, вы можете использовать их и изменять. Окружение также позволяет добавлять при необходимости новые переменные, как делает оболочка.

Насколько полезны переменные окружения, если вы ничего не знаете о них? Полезны, но не особенно.

Perl хранит все доступные ему переменные окружения в хэше (ассоциативный массив) %ENV. Ключи %ENV - это имена переменных окружения, а соответствующие им значения - текущие значения этих переменных. Заметьте, что %ENV всегда содержит текущие значения. Мы употребляем слово "текущие", так как эти значения можно изменять на время выполнения скрипта. все изменения %ENV будут доступны каждому дочернему процессу, созданному как часть соответствующего окружения, но изменения в дочернем окружении не будет влиять на родительский процесс.