(ISMAP)
Content-type:text/html
HTTP server nastavuje pro CGI script celou řadu proměnných prostředí, které může CGI script využít. Příklad:
SERVER_PORT=80
GATEWAY_INTERFACE=CGI/1.1
PWD=/var/www/linux-spsd/cgi-bin/praktika
HTTP_USER_AGENT=Mozilla/5.0 (X11; U; Linux i586; en-US; rv:0.9.9) Gecko/20020311
HTTP_REFERER=http://server.fh.cz/praktika/index.html
REMOTE_PORT=2708
HTTP_HOST=server.fh.cz
SCRIPT_FILENAME=/var/www/www/cgi-bin/praktika/environment.cgi
HTTP_CONNECTION=keep-alive
HTTP_ACCEPT_ENCODING=gzip, deflate, compress;q=0.9
HOSTNAME=server.fh.cz
SERVER_SIGNATURE=
Apache/1.3.22 Server at server.fh.cz Port 80
HTTP_CACHE_CONTROL=max-age=0
SERVER_ADMIN=root@localhost
REQUEST_METHOD=GET
SERVER_ADDR=192.168.1.254
MACHTYPE=i386-redhat-linux-gnu
HTTP_KEEP_ALIVE=300
SCRIPT_NAME=/cgi-bin/praktika/environment.cgi
REMOTE_ADDR=192.168.1.22
SERVER_SOFTWARE=Apache/1.3.22 (Unix) (Red-Hat/Linux) DAV/1.0.2 PHP/4.0.6 mod_throttle/3.1.2
QUERY_STRING=
LANG=cs_CZ
SERVER_NAME=server.fh.cz
SHLVL=1
SERVER_PROTOCOL=HTTP/1.1
HTTP_ACCEPT=text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png;q=0.2,text/css,*/*;q=0.1
REQUEST_URI=/cgi-bin/praktika/environment.cgi
DOCUMENT_ROOT=/var/www/www/html
HTTP_ACCEPT_LANGUAGE=cs, en;q=0.66, ru;q=0.33
SHELL=/bin/false
HOSTTYPE=i386
OSTYPE=linux-gnu
TERM=dumb
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
HTTP_ACCEPT_CHARSET=ISO-8859-2, utf-8;q=0.66, *;q=0.66
<INPUT>
umožňuje
poslat na server mj. i soubor ze strany prohlížeče. CGI scripty tedy musí mít mechanismus
pro převzetí vstupních dat.
Používají se dvě metody - GET a POST - jsou to vlastně názvy metod protokolu
HTTP - další jsou např. HEAD (GET bez těla), OPTIONS (dotaz na možnosti serveru),
PUT (poslání souboru na server), DELETE (smazání souboru na serveru), TRACE (test WWW serveru).
Typ použité metody se CGI script dozví z proměnné REQUEST_METHOD
.
QUERY_STRING
a obecně
nelze říci jaká je maximální povolená délka hodnoty proměnné (pokud při sestavování jádra Linuxu
nespecifikujeme jinak, je max. velikost environmentu 128 kB)
Tato metoda se používáhttp://linux.spsd.pilsedu.cz/cgi-bin/faktorial?12
nebo http://linux.spsd.pilsedu.cz/cgi-bin/formular?Jmeno=Karel&Prijmeni=Dojel
promenna1=hodnota1&promenna2=hodnota2...
CGI script nelze z důvodu bezpečnosti spouštět z jakéhokoliv místa na serveru. Obvykle je třeba dohodnout se se správcem serveru o podmínkách provozování CGI scriptů. Mimo jiné byste se měli dozvědět, kam script umístit. Umístění souvisí také s problémem rozpoznání scriptu WWW serverem, který musí rozlišit, zda má soubor poslat klientovi nebo jej spustit. Rozlišení se provádí buď dle adresáře, kde soubor je (scripty jsou jen v definovanych adresářích), nebo dle koncovky souboru (scripty mívají .cgi,.pl).
Je také třeba zajistit, aby CGI script byl spustitelný pro WWW server. V Unixovém prostředí běží WWW server obvykle s minimálnimi právy (např. uživatel nobody), proto musí mít script nastavená práva pro spouštění jakýmkoliv uživatelem.
Abyste se vyhnuli zbytečnému hledání chyby ve scriptu, když ve skutečnosti je špatně nakonfigurovaný server, doporučuji nejdříve zkusit zcela jednoduché scripty.