Php-ympäristömuuttujat. CGI-ympäristömuuttujat. HTTP-pyyntökenttämuuttujat

Tämä on lyhyt opastus PHP-palvelun kokoonpanon toteuttamiseen, joka riippuu ympäristöstä, jossa se toimii. Olen iloinen, jos joku ehdottaa tyylikkäämpää ratkaisua tai korjaa pieniä asioita.

pääidea

Suorita palvelu, mikropalvelut ja niistä riippuvat sovellukset samassa ekosysteemissä ympäristömuuttujien avulla määritettynä.
Ongelma
Tässä artikkelissa toistetaan "ympäristömuuttujat" liian monta kertaa.
Valmis php-fpm jättää huomioimatta globaalit ympäristömuuttujat (getenv-funktio), kun taas php cli voi vastaanottaa ne.
Tausta
Voit ohittaa tämän osion, jos olet jo työskennellyt .env:n kanssa

Työskentelen tällä hetkellä ZF2:lla kirjoitetun projektin parissa. Projektin konfiguroimiseen käytettiin eri ympäristöjen asetustiedostoja. Tämä luo suuren määrän päällekkäisiä määrityksiä projektin arkistoon, jotain tällaista:
  • session.global.php
  • session.local.php.dist
  • session.unittest.php.dist
  • db.global.php
  • db.local.php.dist
  • db.unittest.php.dist
Nämä kaksoiskappaleet on synkronoitava jatkuvasti keskenään. Lisäksi he tallentavat tiettyä PHP-logiikkaa itsessään, mikä luo koodin päällekkäisyyttä.

Joten projekti ottaa nyt ympäristön huomioon, mutta...

Kun kehitystyötä tehtiin työkoneilla, projekti luki .env-tiedoston ja kaikki toimi. Mutta kun otin käyttöön testiympäristön, kävi ilmi, että jos asetan todellisia järjestelmäympäristömuuttujia, php-fpm jättää ne huomiotta. Googlen ja StackOverflown erilaiset reseptit kiteytyvät kahden tunnetun menetelmän käytön automatisointiin:

1. Muuttujien välittäminen nginx:n kautta käyttämällä fastcgi_param-parametria SOMEENV-testiä;
2. Muuttujien asettaminen env-muodossa php-fpm worker -prosessipoolikokoonpanossa.

Sekä ensimmäinen että toinen vaihtoehto ovat käteviä joissakin erityistilanteissa. Mutta jos ajattelee "ympäristön, ei sovelluksen konfigurointia", tällaiset menetelmät osoittautuvat paljon vaikeammiksi kuin esimerkiksi .env-tiedoston sijoittaminen projektikansioon. Mutta järjestäjän, CI-järjestelmän tai yksinkertaisesti järjestelmänvalvojan ei pitäisi tietää projektin toteutuksen yksityiskohtia, tämä ei ole tyylikästä.

Ehdotettu ratkaisu
Yhdistettyään erilaisia ​​Internetin reseptejä, löysin seuraavan toimivan ratkaisun.
Testattu alla Centos 7, PHP 5.6.14.

1. Avaa /etc/php.ini - Korvaa variables_order = "GPCS" muuttujalla_order = "EGPCS" # Tämän jälkeen PHP lisää ympäristömuuttujat globaaliin avaruuteen # http://php.net/manual/ru/ini. core.php #ini.variables-order 2. Avaa /etc/php-fpm.d/www.conf, jota ei pidä sekoittaa tiedostoon /etc/php-fpm.conf (voi sijaita eri paikoissa eri järjestelmissä, tämä on php-fpm:n www-prosessipoolin konfiguraatio - Lisää (tai vaihda, jos sinulla on): clear_env = no # poista globaalien muuttujien tyhjennys käynnistetyiltä työntekijöiltä 3. Aseta tarvittavat ympäristömuuttujat tiedostossa /etc/environment (vakiosyntaksi A=B ) 4. ln -fs / etc/environment /etc/sysconfig/php-fpm # nyt php-fpm palveluympäristömuuttuja config on yksinkertaisesti linkki globaaliin konfiguraatioon 5. systemctl daemon-reload && service php-fpm uudelleenkäynnistys

Sama lähestymistapa symlinkin kanssa pätee teoriassa muihin palveluihin.

Ehdotetun ratkaisun edut:
- Tiedostoon /etc/environment tallennetut muuttujat ovat käytettävissä eri sovelluksissa. Voit kutsua echoa $MYSQL_HOST shellissä tai getenv("MYSQL_HOST") php:ssä.
- Ympäristömuuttujat, joita ei ole erikseen asetettu tiedostoon /etc/environment, eivät päädy tiedostoon php-fpm. Tämä antaa orkestraattorille mahdollisuuden ohjata ympäristöä sen eristetyn järjestelmän ulkopuolelta, jossa palvelu on käynnissä.

Miinukset:
- Valitettavasti en löytänyt toimivaa uudelleenlatauskomentoa php-fpm:stä, samanlainen kuin nginx, joten jos muutat tiedostoa /etc/environment, sinun on tehtävä systemctl daemon-reload && service php-fpm käynnistyy uudelleen.

Tärkeä: Jos sovelluksesi ei toimi eristetyssä ympäristössä (palvelin, virtuaalikone, säilö), ympäristömuuttujien määrittäminen voi ennakoimattomasti vaikuttaa järjestelmän naapuripalveluihin globaalissa tilassa olevien nimien osumien vuoksi.

Huomio! Artikkeli on kirjoitettu Windows 7 -käyttöjärjestelmässä, mutta PHP:n lisäämisessä ympäristömuuttujiin muissa versioissa (Windows XP, Windows Vista, Windows 8, ...) ei ole perustavanlaatuisia eroja.

Tiedot! Kaikki asetusten polut näytetään sen perusteella, että Denwer on asennettu D:/web-kansioon. Kun käytät artikkelin tietoja, älä unohda muuttaa tätä polkua omaksi.

Jotta voit käyttää PHP:tä mukavasti Windows-konsolissa, sinun on määritettävä ympäristömuuttujat. Muussa tapauksessa, kun työskentelet PHP:n kanssa konsolin kautta, sinun on kirjoitettava php.exe-tiedoston koko polku php-komennon sijaan.

Oletetaan, että Denwer on asennettu D:/web-kansioon.

Napsauta hiiren kakkospainikkeella "Tietokone" -kuvaketta Ominaisuudet:

Järjestelmän lisäparametrit:

"Lisäasetukset"-välilehti, "Ympäristöasetukset..." -painike:

Järjestelmäasetukset-ryhmässä, korosta Polku-muuttuja ja napsauta Muokkaa-painiketta:

Lisää rivi D:\web\usr\local\php5; ja napsauta "OK":

Käynnistä Denwer uudelleen. Nyt voit avata konsolin (Win + R ja kirjoittaa cmd) ja tarkistaa PHP:n toiminnan, kirjoittaa komennon:

Korjaa nämä virheet avaamalla tiedosto D:/web/usr/local/php5/php.ini. Etsi muuttujat extension_dir, zend_extension, session.save_path ja aseta ne seuraaviin arvoihin.

Välittömästi ennen komentosarjan käynnistämistä palvelin välittää sille joitakin ympäristömuuttujia tiedoineen. Tietyt muuttujat sisältävät joitakin otsikoita, mutta eivät kaikkia (et voi saada kaikkia otsikoita).

HTTP_ACCEPT- Tämä muuttuja luettelee kaikki MIME-tietotyypit, jotka selain voi hyväksyä. Rivi */* tarkoittaa, että selain ymmärtää minkä tahansa tyypin.

HTTP_ACCEPT= */*

HTTP_REFERER- Tämä muuttuja edustaa tietoa sivusta, jolta käyttäjä tuli tälle sivulle. Tämän muuttujan avulla voit esimerkiksi seurata käyttäjän liikkumista sivustollasi ja tarkastella sitten suosituimpia reittejä.

HTTP_REFERER= http://www.spravkaweb.ru/

HTTP_COOKIE- Tämä muuttuja tallentaa kaikki URL-koodatut evästeet.

HTTP_COOKIE=

HTTP_USER_AGENT- Tunnistaa käyttäjän selaimen. Selaimen tyypin määrittämiseksi sinun on tarkistettava tämä rivi sanojen esiintymisen varalta: jos selain on Internet Explorer, MSIE-alimerkkijono on läsnä, ja jos vain sana Mozilla on läsnä, tämä on Netscape.

HTTP_USER_AGENT= Mozilla/4.0 (yhteensopiva; MSIE 5.0; Windows NT 4.0)

Sinulla on Internet Explorer

HTTP_HOST- Sisältää sen Web-palvelimen toimialueen nimen, jossa komentosarja suoritettiin. Tämä muuttuja on varsin kätevä käyttää esimerkiksi koko polun luomiseen, joka vaaditaan Location-otsikossa, jotta se ei ole sidottu tiettyyn palvelimeen.

HTTP_HOST= www.spravkaweb.ru

HTTP_FROM- Pyynnön lähettäneen käyttäjän sähköpostiosoite.

HTTP_FROM=

PALVELIMEN NIMI- Verkkotunnuksen nimi tai palvelimen IP-osoite.

SERVER_NAME= www.spravkaweb.ru

SERVER_SOFTWARE- Asiakaspyyntöön vastaavan palvelinohjelman nimi ja versio.

SERVER_SOFTWARE= Apache/1.3.33 (Unix) mod_jk/1.2.8 mod_auth_passthrough/1.8 mod_log_bytes/1.2mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_ssl/2.8.22 OpenSSL/0.9.7a. PHP-bGI

PALVELIMEN PORTTI- Tämä muuttuja sisältää palvelinportin, jota käyttäjän selain käytti. Tyypillisesti tämä on 80. Muuttujaa voidaan käyttää myös Location header -parametrin muodostamiseen.

SERVER_PORT= 80

SERVER_PROTOCOL- Muuttuja sisältää pyynnössä käytetyn tietoprotokollan nimen ja version.

SERVER_PROTOCOL= HTTP/1.0

REMOTE_ADDR- Tämä muuttuja sisältää sen käyttäjän isännän IP-osoitteen (tai verkkotunnuksen nimen), jossa selain käynnistettiin.

REMOTE_ADDR= 212.94.114.177

REMOTE_PORT- Portti, joka on määritetty käyttäjän selaimelle vastaanottamaan palvelinvastauksen.

REMOTE_PORT= 4277

REMOTE_USER- Pyynnön lähettäneen käyttäjän tunnistenimi.

REMOTE_USER=

SCRIPT_NAME- Sisältää tämän skriptin sisältävän tiedoston nimen. Tätä muuttujaa on kätevä käyttää muodostettaessa Location-otsikkoa uudelleenohjattaessa itsellesi (self-redirect) sekä korvaamaan tunnisteen action-attribuutin arvo

sivulla, jota komentosarja kutsuu, kun se käynnistetään ilman parametreja (jotta se ei olisi sidottu tiettyyn komentosarjan nimeen).

SCRIPT_NAME=/pril.php

DOCUMENT_ROOT- Web-asiakirjapuun juurihakemisto.

DOCUMENT_ROOT=/home/spravka/public_html

REQUEST_METHOD- Menetelmä, jota käyttäjä käyttää tiedonsiirrossa. On syytä huomata, että hyvin kirjoitetun skriptin tulee itse määrittää tämän muuttujan perusteella, mitä menetelmää käyttäjä käyttää, ja vastaanottaa tiedot sopivasta lähteestä, eikä oletettava, että siirto suoritetaan vain esim. POST-menetelmällä.

REQUEST_METHOD= SAADA

QUERY_STRING- Sisältää parametreja, jotka näkyvät kysymysmerkin jälkeen URL-osoitteessa. Muistutetaan, että ne ovat saatavilla sekä GET- että POST-menetelmillä (jos jälkimmäisessä tapauksessa ne on määritelty tagin action-attribuutissa ).

QUERY_STRING= ss=getenv

PATH_INFO- Sisältää lisätietoja polusta.

PATH_INFO=

PATH_TRANSLATED- Samat tiedot kuin PATH_INFO-muuttujassa etuliiteellä, joka määrittää polun Web-asiakirjapuun juurihakemistoon.

PATH_TRANSLATED=

SISÄLTÖTYYPPI- Pyynnön mediatietotyyppi.

CONTENT_TYPE=

CONTENT_LENGTH- Palauttaa käyttäjän lähettämien tietojen tavujen määrän. Tämä muuttuja on analysoitava, jos hyväksyt ja käsittelet POST-lomaketta.

GATEWAY_INTERFACE- Palvelimen käyttämä CGI-versio.

GATEWAY_INTERFACE= CGI/1.1


ympäristömuuttujat

Ympäristömuuttujat:




echo "Tulit kohteesta: ".getenv("HTTP_REFERER")."
";
$br=getenv("HTTP_USER_AGENT");
if(strpos($br,"MSIE")!==false) echo "Sinulla on Internet Explorer
";
else echo "Sinulla on Netscape tai joku muu.
";
echo "IP-osoitteesi: ".getenv("REMOTE_ADDR")."
";
echo "Tässä ovat selainrivin parametrit: ".getenv("QUERY_STRING");
?>

ympäristömuuttujat

Ympäristömuuttujat PHP:ssä

Välittömästi ennen komentosarjan käynnistämistä palvelin välittää sille joitakin ympäristömuuttujia tiedoineen. Tietyt muuttujat sisältävät joitakin otsikoita, mutta eivät kaikkia (et voi saada kaikkia otsikoita). Alla annan luettelon tärkeimmistä ympäristömuuttujista.

HTTP_ACCEPT

Tämä muuttuja luettelee kaikki MIME-tietotyypit, jonka selain voi tulkita. Rivi */* tarkoittaa, että selain ymmärtää minkä tahansa tyypin.

HTTP_ACCEPT= kuva/gif, kuva/x-xbitmap, kuva/jpeg, kuva/pjpeg, sovellus/x-shockwave-flash, sovellus/vnd.ms-excel, sovellus/msword, */*

HTTP_REFERER

Tämä muuttuja edustaa tietoa sivusta, jolta käyttäjä saapui tälle sivulle. Tämän muuttujan avulla voit esimerkiksi seurata käyttäjän liikkumista sivustollasi ja tarkastella sitten suosituimpia reittejä.

HTTP_REFERER= http://www.spravkaweb.ru/php/pril/

HTTP_COOKIE

Tämä muuttuja tallentaa kaikki URL-koodatut evästeet.

HTTP_COOKIE= hotlog=1; ZDEDebuggerPresent=php,phtml,php3; b=b; PHPSESSID=16805922a9258cda274316e60f649cf8

HTTP_USER_AGENT

Tunnistaa käyttäjän selaimen. Selaimen tyypin määrittämiseksi sinun on tarkistettava tämä rivi sanojen esiintymisen varalta: jos selain on Internet Explorer, MSIE-alimerkkijono on läsnä, ja jos vain sana Mozilla on läsnä, tämä on Netscape.

Esimerkiksi:

HTTP_USER_AGENT= Mozilla/4.0 (yhteensopiva; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon)

HTTP_HOST

Sisältää sen Web-palvelimen toimialueen nimen, jossa komentosarja suoritettiin. Tämä muuttuja on varsin kätevä käyttää esimerkiksi koko polun luomiseen, joka vaaditaan Location-otsikossa, jotta se ei ole sidottu tiettyyn palvelimeen.

HTTP_HOST= www.spravkaweb.ru

HTTP_FROM

Pyynnön lähettäneen käyttäjän sähköpostiosoite.

PALVELIMEN NIMI

Verkkotunnuksen nimi tai palvelimen IP-osoite.

PALVELIN_NAME= www.spravkaweb.ru

SERVER_SOFTWARE

Asiakaspyyntöön vastaavan palvelinohjelman nimi ja versio.

PALVELIMEN PORTTI

Tämä muuttuja sisältää palvelinportin, jota käyttäjän selain käytti. Tyypillisesti tämä on 80. Muuttujaa voidaan käyttää myös Location header -parametrin muodostamiseen.

SERVER_PROTOCOL

Muuttuja sisältää pyynnössä käytetyn tietoprotokollan nimen ja version.

SERVER_PROTOCOL= HTTP/1.1

REMOTE_ADDR

Tämä muuttuja sisältää sen käyttäjän isännän IP-osoitteen (tai verkkotunnuksen nimen), jossa selain käynnistettiin.

REMOTE_PORT

Portti, joka on määritetty käyttäjän selaimelle vastaanottamaan palvelinvastauksen.

REMOTE_USER

Pyynnön tekevän käyttäjän tunnistenimi.

SCRIPT_NAME

Sisältää tämän skriptin sisältävän tiedoston nimen. Tätä muuttujaa on kätevä käyttää muodostettaessa Location-otsikkoa uudelleenohjattaessa itsellesi (self-redirect) sekä korvaamaan tunnisteen action-attribuutin arvo sivulla, jota skripti kutsuu, kun se käynnistetään ilman parametreja (jotta se ei olisi sidottu tiettyyn komentosarjan nimeen).

DOCUMENT_ROOT

Web-asiakirjapuun juurihakemisto.

REQUEST_METHOD

Menetelmä, jota käyttäjä käyttää tiedonsiirrossa. On syytä huomata, että hyvin kirjoitetun skriptin tulee itse määrittää tämän muuttujan perusteella, mitä menetelmää käyttäjä käyttää, ja vastaanottaa tiedot sopivasta lähteestä, eikä oletettava, että siirto suoritetaan vain esim. POST-menetelmällä.

QUERY_STRING

Sisältää parametrit, jotka näkyvät kysymysmerkin jälkeen URL-osoitteessa. Muistutetaan, että ne ovat saatavilla sekä GET- että POST-menetelmillä (jos jälkimmäisessä tapauksessa ne on määritelty tagin action-attribuutissa ).

PATH_INFO

Sisältää lisätietoja reitistä.

PATH_TRANSLATED

Samat tiedot kuin muuttujassa PATH_INFO etuliitteellä, joka määrittää polun Web-asiakirjapuun juurihakemistoon.

SISÄLTÖTYYPPI

Pyynnön mediatietotyyppi.

CONTENT_LENGTH

Palauttaa käyttäjän lähettämän datan tavujen määrän. Tämä muuttuja on analysoitava, jos hyväksyt ja käsittelet POST-lomaketta.

GATEWAY_INTERFACE

Palvelimen käyttämä CGI-versio.

Esimerkki ympäristömuuttujien käytöstä

ympäristömuuttujat

Ympäristömuuttujat:

echo "Tulit kohteesta: ".getenv("HTTP_REFERER")."
";

$br=getenv("HTTP_USER_AGENT");

if(strpos($br,"MSIE")!==false) echo "Sinulla on Internet Explorer
";

else echo "Sinulla on Netscape tai joku muu.
";

echo "IP-osoitteesi: ".getenv("REMOTE_ADDR")."
";

echo "Tässä ovat selainrivin parametrit: ".getenv("QUERY_STRING");

Kirjasta The Art of Programming for Unix kirjoittaja Raymond Eric Stephen

Kirjasta The Art of Programming for Unix kirjoittaja Raymond Eric Stephen

Kirjasta Programming in Ruby [Kieliideologia, teoria ja soveltamisen käytäntö] Kirjailija: Fulton Hal

Kirjasta HTML 5, CSS 3 ja Web 2.0. Nykyaikaisten web-sivustojen kehittäminen. kirjoittaja Dronov Vladimir

Kirjasta Application Development in the Linux Environment. Toinen painos kirjoittaja Johnson Michael K.

10.4 Ympäristömuuttujat Kun Unix-ohjelma suoritetaan, sen käytettävissä oleva ympäristö sisältää joukon nimi-arvo-suhteita (sekä nimet että arvot ovat merkkijonoja). Jotkut niistä asentaa manuaalisesti käyttäjä, toiset asentaa järjestelmä aikana

Kirjasta Firebird DATABASE DEVELOPER'S GUIDE Kirjailija: Borri Helen

10.4.1. Järjestelmän ympäristömuuttujat On olemassa monia hyvin tunnettuja ympäristömuuttujia, jotka ohjelma voi saada, kun se suoritetaan Unix-kuoresta. Nämä muuttujat (erityisesti HOME) on usein arvioitava ennen paikallisen tiedoston lukemista

Kirjasta Linux Programming with examples kirjoittaja Robbins Arnold

10.4.2. Mukautetut ympäristömuuttujat Vaikka sovellukset voivat vapaasti tulkita ympäristömuuttujia järjestelmän määrittämän joukon ulkopuolella, tällaisen ominaisuuden todellinen käyttö on tällä hetkellä melko epätavallista.

Kirjailijan kirjasta

10.4.3. Milloin ympäristömuuttujia tulee käyttää Sekä käyttäjän että järjestelmän ympäristömuuttujien yhteistä on, että ne sisältävät tietoja, joiden tallentaminen suureen määrään asetustiedostoja olisi työlästä. Ja erittäin väsyttävää

Kirjailijan kirjasta

14.4. Ympäristömuuttujat Joskus on tarpeen päästä käsiksi ympäristömuuttujiin, jotka ovat linkki ohjelman ja ulkomaailman välillä. Ympäristömuuttujat ovat yksinkertaisesti otsikoita, jotka liittyvät johonkin tekstiin (yleensä pieniä); he tallentavat esimerkiksi polkuja

Kirjailijan kirjasta

Funktiot ja muuttujat. Paikalliset muuttujat Aiemmin määritellyt funktiot luovat omat muuttujansa rungossaan. Nämä ovat niin sanottuja paikallisia muuttujia. Tällaiset muuttujat ovat käytettävissä vain siinä funktiorungossa, jossa ne on ilmoitettu. Kun suoritus on valmis

Kirjailijan kirjasta

22.3.3. Ympäristömuuttujat Setuid- tai setgid-ominaisuuksia käyttävissä ohjelmissa ympäristöasetusten kanssa on oltava erityisen huolellinen. Ohjelman aktivoinut käyttäjä määrittää nämä muuttujat, mikä avaa oven hyökkäyksille. Ilmeisin hyökkäys

Kirjailijan kirjasta

Ympäristömuuttujat Ympäristömuuttujat ovat yleisiä järjestelmäasetuksia, joita käytetään, kun käyttöjärjestelmä käynnistetään ensimmäisen kerran. Windowsissa, Linuxissa ja useimmissa UNIX-järjestelmissä Firebird-palvelin tunnistaa ja käyttää tiettyjä ympäristömuuttujia, jos ne

Kirjailijan kirjasta

Missä Windowsin ympäristömuuttujat asetetaan Ympäristömuuttujien tyypit ja niiden asetustavat vaihtelevat Windows-versiosta toiseen. Taulukossa Taulukossa 3.1 on esitetty ympäristömuuttujien tyypit (jos sovellettavissa) ja asettamismenetelmät Taulukko 3.1. Ympäristömuuttujan asetukset kohteelle

Kirjailijan kirjasta

Luku 2 Argumentit, asetukset ja ympäristömuuttujat Jokaisen ohjelman ensimmäinen tehtävä on yleensä tulkita komentorivin valitsimia ja argumentteja. Tässä luvussa tarkastellaan, kuinka C- (ja C++)-ohjelmat saavat komentoriviargumenttinsa, mikä kuvaa standardia

ympäristömuuttujat

Ympäristömuuttujat PHP:ssä

Välittömästi ennen komentosarjan käynnistämistä palvelin välittää sille joitakin ympäristömuuttujia tiedoineen. Tietyt muuttujat sisältävät joitakin otsikoita, mutta eivät kaikkia (et voi saada kaikkia otsikoita). Alla annan luettelon tärkeimmistä ympäristömuuttujista.

HTTP_ACCEPT

Tämä muuttuja luettelee kaikki MIME-tietotyypit, jonka selain voi tulkita. Rivi */* tarkoittaa, että selain ymmärtää minkä tahansa tyypin.

HTTP_ACCEPT= kuva/gif, kuva/x-xbitmap, kuva/jpeg, kuva/pjpeg, sovellus/x-shockwave-flash, sovellus/vnd.ms-excel, sovellus/msword, */*

HTTP_REFERER

Tämä muuttuja edustaa tietoa sivusta, jolta käyttäjä saapui tälle sivulle. Tämän muuttujan avulla voit esimerkiksi seurata käyttäjän liikkumista sivustollasi ja tarkastella sitten suosituimpia reittejä.

HTTP_REFERER= http://www.spravkaweb.ru/php/pril/

HTTP_COOKIE

Tämä muuttuja tallentaa kaikki URL-koodatut evästeet.

HTTP_COOKIE= hotlog=1; ZDEDebuggerPresent=php,phtml,php3; b=b; PHPSESSID=16805922a9258cda274316e60f649cf8

HTTP_USER_AGENT

Tunnistaa käyttäjän selaimen. Selaimen tyypin määrittämiseksi sinun on tarkistettava tämä rivi sanojen esiintymisen varalta: jos selain on Internet Explorer, MSIE-alimerkkijono on läsnä, ja jos vain sana Mozilla on läsnä, tämä on Netscape.

Esimerkiksi:

HTTP_USER_AGENT= Mozilla/4.0 (yhteensopiva; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon)

HTTP_HOST

Sisältää sen Web-palvelimen toimialueen nimen, jossa komentosarja suoritettiin. Tämä muuttuja on varsin kätevä käyttää esimerkiksi koko polun luomiseen, joka vaaditaan Location-otsikossa, jotta se ei ole sidottu tiettyyn palvelimeen.

HTTP_HOST= www.spravkaweb.ru

HTTP_FROM

Pyynnön lähettäneen käyttäjän sähköpostiosoite.

PALVELIMEN NIMI

Verkkotunnuksen nimi tai palvelimen IP-osoite.

PALVELIN_NAME= www.spravkaweb.ru

SERVER_SOFTWARE

Asiakaspyyntöön vastaavan palvelinohjelman nimi ja versio.

PALVELIMEN PORTTI

Tämä muuttuja sisältää palvelinportin, jota käyttäjän selain käytti. Tyypillisesti tämä on 80. Muuttujaa voidaan käyttää myös Location header -parametrin muodostamiseen.

SERVER_PROTOCOL

Muuttuja sisältää pyynnössä käytetyn tietoprotokollan nimen ja version.

SERVER_PROTOCOL= HTTP/1.1

REMOTE_ADDR

Tämä muuttuja sisältää sen käyttäjän isännän IP-osoitteen (tai verkkotunnuksen nimen), jossa selain käynnistettiin.

REMOTE_PORT

Portti, joka on määritetty käyttäjän selaimelle vastaanottamaan palvelinvastauksen.

REMOTE_USER

Pyynnön tekevän käyttäjän tunnistenimi.

SCRIPT_NAME

Sisältää tämän skriptin sisältävän tiedoston nimen. Tätä muuttujaa on kätevä käyttää muodostettaessa Location-otsikkoa uudelleenohjattaessa itsellesi (self-redirect) sekä korvaamaan tunnisteen action-attribuutin arvo sivulla, jota skripti kutsuu, kun se käynnistetään ilman parametreja (jotta se ei olisi sidottu tiettyyn komentosarjan nimeen).

DOCUMENT_ROOT

Web-asiakirjapuun juurihakemisto.

REQUEST_METHOD

Menetelmä, jota käyttäjä käyttää tiedonsiirrossa. On syytä huomata, että hyvin kirjoitetun skriptin tulee itse määrittää tämän muuttujan perusteella, mitä menetelmää käyttäjä käyttää, ja vastaanottaa tiedot sopivasta lähteestä, eikä oletettava, että siirto suoritetaan vain esim. POST-menetelmällä.

QUERY_STRING

Sisältää parametrit, jotka näkyvät kysymysmerkin jälkeen URL-osoitteessa. Muistutetaan, että ne ovat saatavilla sekä GET- että POST-menetelmillä (jos jälkimmäisessä tapauksessa ne on määritelty tagin action-attribuutissa ).

PATH_INFO

Sisältää lisätietoja reitistä.

PATH_TRANSLATED

Samat tiedot kuin muuttujassa PATH_INFO etuliitteellä, joka määrittää polun Web-asiakirjapuun juurihakemistoon.

SISÄLTÖTYYPPI

Pyynnön mediatietotyyppi.

CONTENT_LENGTH

Palauttaa käyttäjän lähettämän datan tavujen määrän. Tämä muuttuja on analysoitava, jos hyväksyt ja käsittelet POST-lomaketta.

GATEWAY_INTERFACE

Palvelimen käyttämä CGI-versio.

Esimerkki ympäristömuuttujien käytöstä