$B4XO"%b%8%e!<%k(B mod_alias mod_cgi |
$B4XO"%G%#%l%/%F%#%V(B AddHandler Options ScriptAlias |
CGI (Common Gateway Interface) $B$O!"%&%'%V%5!<%P$,(B $B%3%s%F%s%D@8@.$r$9$k30It%W%m%0%i%`$H6(D4$7$FF0:n$9$k$?$a$NJ}K!$r(B $BDj5A$7$F$$$^$9!#$=$N%W%m%0%i%`$O$7$P$7$P(B CGI $B%W%m%0%i%`$d(B CGI $B%9%/%j%W%H$H8F$P$l$^$9!#(BCGI $B$O!"%&%'%V%5%$%H$KF0E*$J%3%s%F%s%D$r(B $BCV$/$?$a$N:G$b4JC1$G0lHLE*$JJ}K!$G$9!#$3$N%I%-%e%a%s%H$O!"(B Apache $B%&%'%V%5!<%P$G(B CGI $B$r@_Dj$7!"(B CGI $B%W%m%0%i%`$r=q$-;O$a$k$?$a$NF~Lg=q$H$J$k$G$7$g$&!#(B
CGI $B%W%m%0%i%`$r@5$7$/F0:n$5$;$k$K$O!"(BCGI $B$r5v2D$9$k$h$&$K(B Apache $B$N@_Dj$r9T$&I,MW$,$"$j$^$9!#(B $B$3$l$r9T$J$&$?$a$NJ}K!$,$$$/$D$+$"$j$^$9!#(B
ScriptAlias
$B%G%#%l%/%F%#%V$r;HMQ$7$F!"(B
CGI $B%W%m%0%i%`MQ$NFCJL$JJL%G%#%l%/%H%j$r(B Apache $B$K@_Dj$7$^$9!#(B
Apache $B$O!"$3$N%G%#%l%/%H%jCf$NA4$F$N%U%!%$%k$r(B CGI
$B%W%m%0%i%`$G$"$k$H2>Dj$7$^$9!#$=$7$F!"$3$NFCJL$J%j%=!<%9$,(B
$B%/%i%$%"%s%H$+$iMW5a$5$l$k$H!"$=$N%W%m%0%i%`$N
ScriptAlias
$B%G%#%l%/%F%#%V$O0J2<$N$h$&$K;HMQ$7$^$9(B:
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
$B%G%U%)%k%H0LCV$K(B Apache $B$r%$%s%9%H!<%k$7$?$J$i$P!"(B
$B$3$NNc$O%G%U%)%k%H>uBV$N(B httpd.conf
$B@_Dj%U%!%$%k$K4^$^$l$F$$$^$9!#(BScriptAlias
$B%G%#%l%/%F%#%V$O!"(BURL $B$NA0$KIU2C$9$k%G%#%l%/%H%j$rDj5A$9$k(B
Alias
$B%G%#%l%/%F%#%V$H$+$J$j;w$F$$$^$9!#(B
Alias
$B$H(B ScriptAlias
$B$ODL>o!"(B
DocumentRoot
$B%G%#%l%/%H%j30$N%G%#%l%/%H%j$N$?$a$K;HMQ$5$l$^$9!#(B
Alias
$B$H(B ScriptAlias
$B$H$N:9$O!"(B
ScriptAlias
$B$,@\F,<-$G;O$^$k$9$Y$F$N(B URL $B$O(B CGI
$B%W%m%0%i%`$H$_$J$5$l$k$H$$$&DI2C$N0UL#$r4^$s$G$$$k$3$H$G$9!#(B
$B=>$C$F!">e5-$NNc$G$O!"(B/cgi-bin/
$B$G;O$^$k%j%=!<%9$X$N$"$i$f$k%j%/%(%9%H$KBP$7$F!"%G%#%l%/%H%j(B
/usr/local/apache/cgi-bin/
$B$+$iDs6!$7!"$=$l$i$r(B
CGI $B%W%m%0%i%`$H$7$F07$&$h$&(B Apache $B$K<($7$^$9!#(B
$BNc$($P!"(BURL http://dev.rcbowen.com/cgi-bin/test.pl
$B$,MW5a$5$l$?>l9g!"(BApache $B$O(B $B%U%!%$%k(B
/usr/local/apache/cgi-bin/test.pl
$B$r
CGI $B%W%m%0%i%`$O!"%;%-%e%j%F%#>e$NM}M3$+$i(B ScriptAlias
$B$5$l$?%G%#%l%/%H%j$K@)8B$5$l$k$3$H$,$7$P$7$P$"$j$^$9!#$3$NJ}K!$K$h$j!"(B
CGI $B%W%m%0%i%`$r;HMQ$G$-$k%f!<%6$r4IM}cgi-bin
$B%G%#%l%/%H%j$X$N%"%/%;%9$,$G$-$J$$>l9g!"(BCGI
$B%W%m%0%i%`$r
$B%5!<%P$N%a%$%s$N@_Dj%U%!%$%kCf$G(B Options
$B%G%#%l%/%F%#%V$rL@<(E*$K;HMQ$9$k$3$H$G!"FCDj$N%G%#%l%/%H%jG[2<$G(B
CGI $B$N
<Directory /usr/local/apache/htdocs/somedir> Options +ExecCGI </Directory>
$B>e5-%G%#%l%/%F%#%V$O!"(BCGI $B%U%!%$%k$Ncgi
$B$^$?$O(B pl
$B$r3HD%;R$K;}$D$9$Y$F$N%U%!%$%k$r(B
CGI $B%W%m%0%i%`$H$7$F$_$J$9$3$H$r%5!<%P$KEA$($^$9(B:
AddHandler cgi-script cgi pl
.htaccess
$B%U%!%$%k$O!"%G%#%l%/%H%jKh$K%G%#%l%/%F%#%V$r;XDj$9$kJ}K!$G$9!#(BApache
$B$O!"%j%=!<%9$rDs6!$9$k$H$-$K!"Ds6!$9$k%U%!%$%k$,CV$+$l$F$$$k%G%#%l%/%H%jCf$N(B
.htaccess
$B$H$$$&%U%!%$%k$r;2>H$7$^$9!#$=$N%U%!%$%k$rH/8+$7$?$i!"(B
$B$=$NCf$GH/8+$5$l$?%G%#%l%/%F%#%V$,E,MQ$5$l$^$9!#(B.htaccess
$B%U%!%$%k$O!"(BAllowOverride
$B%G%#%l%/%F%#%V$N;XDj$K$h$j(B
$B;H$($k$h$&$K$J$j$^$9!#(BAllowOverride
$B%G%#%l%/%F%#%V$O!"(B
.htaccess
$B%U%!%$%k$G@_Dj$G$-$k%G%#%l%/%F%#%V$N%?%$%W$r;XDj$7$^$9!#(B
AllowOverride
$B%G%#%l%/%F%#%V$N;XDj$,$J$$>l9g!"$^$C$?$/;H$($^$;$s!#(B
CGI $B$N
AllowOverride Options
.htaccess
$B%U%!%$%k$G$O!"
Options +ExecCGI
$B$3$N@_Dj$G$O!"$3$N%G%#%l%/%H%j$K$*$1$k(B
CGI $B%W%m%0%i%`$N
$BDL>o$N%W%m%0%i%_%s%0$H(B
CGI $B%W%m%0%i%_%s%0$N4V$K$O
$B0l$D$O!"(BCGI $B%W%m%0%i%`$N$9$Y$F$N=PNO$K$O(B MIME-type
$B%X%C%@$rIU$1$J$1$l$P$J$j$^$;$s!#$3$l$O$I$N$h$&$J
Content-type: text/html
$B$b$&0l$D$O!"=PNO$r(B HTML $B$+!"(B $B%V%i%&%6$,I=<($9$k$3$H$,$G$-$k2?$+B>$N7A<0$K$9$kI,MW$,$"$j$^$9!#(B $BBgDq$N>l9g$O(B HTML $B$G$7$g$&$,!"(BGIF $B%$%a!<%8$dB>$NHs(B HTML $B%3%s%F%s%D$r=PNO$9$k(B CGI $B%W%m%0%i%`$r=q$/$3$H$b$"$k$G$7$g$&!#(B
$B$3$l$iFsE@0J30$G$O!"(BCGI $B%W%m%0%i%`$r=q$/$3$H$O!"(B $B$"$J$?$,=q$$$F$$$kB>$N%W%m%0%i%`$HBg$$$K;w$F$$$k$G$7$g$&!#(B
$Bfirst.pl $B$H$$$&%U%!%$%k$KJ]B8$7!"(B
$B$=$l$r(B cgi-bin
$B%G%#%l%/%H%j$KCV$$$F$/$@$5$$!#(B
#!/usr/bin/perl print "Content-type: text/html\r\n\r\n"; print "Hello, World.";
Perl $B$K@:DL$7$F$$$J$/$F$b!"(B
$B2?$,5/$3$k$+$rM}2r$9$k$3$H$O$G$-$k$O$:$G$9!#(B
1 $B9TL\$O!"(B/usr/bin/perl
$B$G8+$D$1$i$l$k%$%s%?%W%j%?(B
$B$K$3$N%U%!%$%k$r6!5k$9$k$3$H$G$3$N%W%m%0%i%`$,
$B9%$_$N%V%i%&%6$r3+$-!"%"%I%l%9(B
http://www.example.com/cgi-bin/first.pl
$B$"$k$$$O%U%!%$%k$rCV$$$?%m%1!<%7%g%s$r;XDj$9$k$H!"(B
Hello, World.
$B$H$$$&(B 1 $B9T$,%V%i%&%6%&%#%s%I(B
$B$K8=$l$k$G$7$g$&!#$=$l$O$"$^$j%(%-%5%$%F%#%s%0$J$3$H$G$O$"$j$^$;$s!#(B
$B$7$+$7!"$3$l$,$&$^$/F0$1$P!"(B
$BB>$N$I$N$h$&$J$b$N$G$bF0$+$9$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B
$B%&%'%V$+$i(B CGI $B%W%m%0%i%`$X$N%"%/%;%9$r9T$J$C$?$H$-!"(B $B%V%i%&%6$G8+$k2DG=@-$,$"$k;M$D$N4pK\E*$J$3$H$,$"$j$^$9(B:
$B%5!<%P$O$"$J$?$N8"8B$G
chmod a+x first.pl
$B$^$?!"$b$7$"$J$?$N%W%m%0%i%`$,B>$N%U%!%$%k$rFI$_=q$-$9$k$J$i$P!"(B $B$=$l$i$N%U%!%$%k$O!"$3$l$,2DG=$H$J$k@5$7$$%Q!<%_%C%7%g%s(B $B$r;}$C$F$$$kI,MW$,$"$j$^$9!#(B
$B$3$l$KBP$9$kNc30$O!"%5!<%P$,(B suexec
$B$r;HMQ$9$k$h$&@_Dj$5$l$F$$$k>l9g$G$9!#(Bsuexec $B$O!"(BCGI
$B%W%m%0%i%`$,CV$+$l$F$$$k%P!<%A%c%k%[%9%H$^$?$O%f!<%6$N(B
$B%[!<%`%G%#%l%/%H%j$K$h$C$F!"0[$J$k%f!<%68"8B$G
$B%3%^%s%I%i%$%s$+$i%W%m%0%i%`$r
$B%W%m%0%i%`$,(B CGI $B%W%m%0%i%`$H$7$F%&%'%V%5!<%P$K$h$C$F
$BF1MM$J$3$H$O!"%9%/%j%W%H$N%$%s%?%W%j%?(B ($B$7$P$7$P(B perl
) $B$X$N%Q%9$G!"(BCGI $B%W%m%0%i%`$N(B 1 $B9TL\$K
#!/usr/bin/perl
$B$3$l$,%$%s%?!<%W%j%?$X$N
CGI $B%W%m%0%i%`$,<:GT$9$k$N$OBgDq!"(B
$B%W%m%0%i%`<+?H$KLdBj$,$"$k>l9g$G$9!#0lEY(B CGI $B$N;H$$J}$rM}2r$7!"(B
$BA0=R$NFs$D$N8m$j$rHH$7$F$$$J$$$J$i$P!"$^$:4V0c$$$J$/$=$&$G$7$g$&!#(B
$B%V%i%&%6$rDL$7$F%F%9%H$r9T$&A0$KI,$:!"%3%^%s%I%i%$%s$+$i(B
$B%W%m%0%i%`$N
$B%(%i!<%m%0$OM'C#$G$9!#A4$F$N$&$^$/$$$+$J$$$3$H$O!"(B
$B%(%i!<%m%0$K%a%C%;!<%8$r@8@.$7$^$9!#I,$:$=$l$r:G=i$K8+$k$Y$-$G$9!#(B
$B$b$7!"$"$J$?$,%&%'%V%5%$%H$r
CGI $B%W%m%0%i%_%s%0$K=OC#$9$k$H!"(B $BN"$G5/$3$C$F$$$k$3$H$K$D$$$F99$KM}2r$9$k$3$H$OM-1W$K$J$k$G$7$g$&!#(B $B%V%i%&%6$H%5!<%P$,$I$N$h$&$KAj8_DL?.$9$k$+$K$D$$$F$OFC$K$=$&$G$9!#(B $B$J$<$J$i!"(B``Hello, World.'' $B$r0u;z$9$k%W%m%0%i%`$r=q$/$3$H$O$^$3$H$K7k9=$G$9$,!"(B $B$=$l$OFC$KM-1W$G$O$"$j$^$;$s!#(B
$B4D6-JQ?t$O!"$"$J$?$,%3%s%T%e!<%?$r;H$&$H$-$KJU$j$KB8:_$7$F$$$kCM$G$9!#(B
$B$=$l$i$O!"%Q%9(B
($B%3%^%s%I$r%?%$%W$7$?$H$-$Kenv
$B$rF~NO$7$^$9!#(B
CGI $B$N=hM}Cf!"%5!<%P$H%V%i%&%6$b4D6-JQ?t$r@_Dj$7!"(B
$B$=$l$K$h$jAj8_$KDL?.$9$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B
$B$=$N4D6-JQ?t$O!"%V%i%&%6%?%$%W(B (Netscape, IE, Lynx)$B!"(B
$B%5!<%P%?%$%W(B (Apache, IIS, WebSite)$B!"
$B$3$l$i$NJQ?t$O(B CGI $B%W%m%0%i%^$,;HMQ$9$k$3$H$,$G$-$^$9!#(B $B$=$7$F!"$=$l$O%/%i%$%"%s%H$H%5!<%P$NDL?.$NOC$NH>J,$G$9!#(B $BI,MW$JJQ?t$N40A4$J%j%9%H$O(B http://hoohoo.ncsa.uiuc.edu/cgi/env.html $B$K$"$j$^$9!#(B
$B0J2<$NC1=c$J(B Perl CGI $B%W%m%0%i%`$O!"(B
$BEO$5$l$kA4$F$N4D6-JQ?t$rI=<($7$^$9!#F1MM$N%W%m%0%i%`$O!"(B
Apache $B%G%#%9%H%j%S%e!<%7%g%s$N(B cgi-bin
$B%G%#%l%/%H%j$KFs$D4^$^$l$F$$$^$9!#$$$/$D$+$NJQ?t$,I,?\$G$"$j!"(B
$B$$$/$D$+$OG$0U$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#$=$7$F!"(B
$B8x<0$N%j%9%H$K$O$J$$$$$/$D$+$NJQ?t$,I=<($5$l$F$$$k$+$b$7$l$^$;$s!#(B
$B$5$i$K!"(BApache $B$O%G%U%)%k%H$GMQ0U$5$l$F$$$k4pK\E*$J$b$N$K(B
$B$"$J$?<+?H$N4D6-JQ?t$r2C$($k(B$B$?$a$N!"(B
$BB?$/$N0[$J$kJ}K!$rMQ0U$7$F$7$^$9!#(B
#!/usr/bin/perl print "Content-type: text/html\n\n"; foreach $key (keys %ENV) { print "$key --> $ENV{$key}<br>"; }
$B%5!<%P$H%/%i%$%"%s%H4V$N$b$&0l$D$NDL?.$O!"I8=`F~NO(B
(STDIN
)$B$HI8=`=PNO(B (STDOUT
)
$B$rDL$8$F9T$J$o$l$^$9!#DL>o$NJ8L.$K$*$$$F!"(BSTDIN
$B$O%-!<%\!<%I$d%W%m%0%i%`$,F0:n$9$k$?$a$KM?$($i$l$k%U%!%$%k$r0UL#$7!"(B
STDOUT
$B$ODL>o%3%s%=!<%k$^$?$O%9%/%j!<%s$r0UL#$7$^$9!#(B
$B%&%'%V%U%)!<%`$+$i(B CGI $B%W%m%0%i%`$X(BPOST
$B$7$?$H$-!"(B
$B%U%)!<%`$N%G!<%?$OFCJL$J%U%)!<%^%C%H$GB+$M$i$l!"(BSTDIN
$B$rDL$7$F!"(BCGI $B%W%m%0%i%`$K0z$-EO$5$l$^$9!#(B
$B%W%m%0%i%`$O%G!<%?$,%-!<%\!<%I$b$7$/$O%U%!%$%k(B
$B$+$iMh$F$$$?$+$N$h$&$K=hM}$9$k$3$H$,$G$-$^$9!#(B
$B!VFCJL$J%U%)!<%^%C%H!W$O$H$F$bC1=c$G$9!#%U%#!<%k%IL>$HCM$O(B $B%$%3!<%k(B (=) $B$G7k$P$l$^$9!#$=$7$FCM$NAH$O%"%s%Q%5%s%I(B (&) $B$G7k$P$l$^$9!#%9%Z!<%9!"%"%s%Q%5%s%I!"%$%3!<%k$N$h$&$JLLE]$JJ8;z$O!"(B $B$=$l$i$,F0:n$rBLL\$K$7$J$$$h$&$K$=$NJ8;z$KAjEv$9$k(B 16 $B?J$KJQ49$5$l$^$9!#A4%G!<%?J8;zNs$O!"0J2<$N$h$&$K$J$j$^$9(B:
name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
$B;~!9!"$3$N$h$&$JJ8;zNs$,(B URL $B$KIU2C$5$l$k$N$r8+$k$G$7$g$&!#(B
$B$=$N>l9g!"%5!<%P$O(B QUERY_STRING
$B$H$$$&4D6-JQ?t$K$=$NJ8;zNs$rF~$l$^$9!#$=$l$O(B GET
$B%j%/%(%9%H$H8F$P$l$^$9!#(BHTML $B%U%)!<%`$G$O!"%G!<%?$rEO$9$?$a$K(B
GET
$B$H(B POST
$B$N$I$A$i$r;HMQ$9$k$+$r!"(B
FORM
$B%?%0$N(B METHOD
$BB0@-$N@_Dj$G;XDj$7$^$9!#(B
CGI $B%W%m%0%i%`$O!"$=$NJ8;zNs$rLr$KN)$D>pJs$KJ,3d$9$k@UG$$,$"$j$^$9!#(B $B9,$$$K$b!"$=$N%G!<%?=hM}$r=u$1$k%i%$%V%i%j$d%b%8%e!<%k$,B8:_$7$^$9!#(B $B$3$l$i$O!"(BCGI $B%W%m%0%i%`$NB>$NLL$G$bF1MM$KLr$KN)$A$^$9!#(B
CGI $B%W%m%0%i%`$r=q$/$H$-!"LLE]$J;E;v$NBgItJ,$r$7$F$/$l$k(B $B%3!<%I%i%$%V%i%j$^$?$O%b%8%e!<%k$r;H$&$3$H$r8!F$$9$Y$-$G$9!#(B $B$3$l$O%(%i!<$r8:$i$7!"Aa$$3+H/$K$D$J$,$j$^$9!#(B
Perl $B$G(B CGI $B%W%m%0%i%`$r=q$$$F$$$k$J$i!"%b%8%e!<%k$O(B
CPAN $B$GDs6!$5$l$F$$$^$9!#(B
$B$3$NL\E*$N$?$a$N:G$bIa5Z$7$F$$$k%b%8%e!<%k$O(B CGI.pm $B$G$9!#(B
CGI::Lite $B$b8!F$$7$^$7$g$&!#$3$l$O!"$[$H$s$I$N%W%m%0%i%`(B
$B$K$*$$$FI,MW$H$9$k$9$Y$F$N5!G=$N:G>.%;%C%H$N
C $B$G(B CGI $B%W%m%0%i%`$r=q$$$F$$$k$J$i!"$$$m$$$m$J%*%W%7%g%s$,$"$j$^$9!#(B $B$3$l$i$NFb$N0l$D$O(B http://www.boutell.com/cgic/ $B$GDs6!$5$l$F$$$k(B CGIC $B%i%$%V%i%j$G$9!#(B
CGI $B$K4X$9$k>pJs$O%&%'%V$G?tB?$/Ds6!$5$l$F$$$^$9!#(B
CGI $B$NLdBj$K$D$$$F$O(B Usenet $B$N(B comp.infosystems.www.authoring.cgi
$B$G!"B>$N%f!<%6$HO@5D$9$k$3$H$,$G$-$^$9!#(BHTML Writers Guide $B$N(B -servers
$B%a!<%j%s%0%j%9%H$O!"$"$J$?$N
$B$=$7$F$b$A$m$s!"$*$=$i$/(B CGI $B%W%m%0%i%`$NF0:n$K4X$9$k>\:Y$NA4$F$,5-=R$5$l$F$$$k(B CGI $B$N;EMM$rFI$`$Y$-$G$9!#%*%j%8%J%k%P!<%8%g%s$r(B NCSA $B$G!"(B $B%"%C%W%G!<%H$5$l$?%I%i%U%H$r(B Common Gateway Interface RFC $B%W%m%8%'%/%H(B$B$G;2>H$9$k$3$H$,$G$-$^$9!#(B
CGI $B$NLdBj$K$D$$$F!"(B
$B2C$o$C$F$$$k%a!<%j%s%0%j%9%H$^$?$O%K%e!<%9%0%k!<%W$K
Apache
$B$N%=!<%9%3!<%I$K$*$$$FLdBj$rH/8+$7$?$3$H$r3N?.$7$F$$$J$$8B$j!"(B
CGI $B$NLdBj$K4X$9$k