PNG IHDR ; IDATxܻn0K )(pA7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5 bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô!x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%tMז -lG6mrz2s%9s@-k9=)kB5\+͂ZsٲRn~GRCwIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL /F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ R IENDB`
Apache HTTP Server Version 2.4
õ | õ þ |
---|---|
CGI (Common Gateway Interface) CGI α Ȥ CGI ũƮ θ, ( ) ܺ α ϴ Ѵ. Ʈ ϰ ̴. ġ CGI ϴ Ұϰ, CGI α ۼغ.
CGI α ùٷ Ϸ CGI ϵ ġ ؾ Ѵ. ϴ .
ScriptAlias
þ ϸ ġ Ư 丮 CGI α
д. ġ 丮 ִ CGI
α̶ Ͽ Ŭ̾Ʈ ڿ ûϸ ڿ
Ϸ õѴ.
ScriptAlias
þ Ѵ.
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
ġ ⺻ ҿ ġ
httpd.conf
Ͽ ִ ̴. ScriptAlias
þ Alias
þ URL
պκ Ư 丮 Ѵ.
Alias
ScriptAlias
DocumentRoot
丮 ۿ ִ
丮 Ѵ. Alias
ScriptAlias
ScriptAlias
߰ URL պκ
ϴ CGI α ϴ ̴.
ġ /cgi-bin/
ϴ ڿ ûϸ
/usr/local/apache2/cgi-bin/
丮
ãƼ CGI α ó϶ ˸.
, URL
http://www.example.com/cgi-bin/test.pl
ûϸ ġ
/usr/local/apache2/cgi-bin/test.pl
Ͽ ȯѴ. ϰ డϸ
ε ؾ Ѵ. ġ
.
Ȼ CGI α ScriptAlias
丮
Ѵ. ڴ CGI α
ִ ִ. ġ
ߴٸ ƹ 丮 CGI α
. , UserDir
þ Ͽ
ڰ ڽ Ȩ丮 츦
. ڰ ڽ CGI α ϰ
cgi-bin
丮 ٱ ٸ, ٸ
CGI α ϰ ̴.
ƹ 丮 CGI Ϸ
ʿϴ. , AddHandler
SetHandler
þ Ͽ
cgi-script
ڵ鷯 ۵ؾ Ѵ. ι°,
Options
þ
ExecCGI
ؾ Ѵ.
ּϿ Options
þ Ͽ Ư
丮 CGI ִ.
<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>
þ ġ CGI Ѵ.
CGI ˷ Ѵ. AddHandler
þ
Ȯڰ cgi
pl
CGI α̶ ˸.
AddHandler cgi-script .cgi .pl
.htaccess
丮
httpd.conf
ٱ 쿡 CGI α
ִ ˷ش.
Ʒ ϸ 丮 .cgi
CGI α Ѵ.
<Directory /home/*/public_html>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
ϸ 丮 cgi-bin
丮 ִ CGI α νѴ.
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>
``Ϲ'' αְ CGI α ̿ ΰ ֵ ִ.
ù° ̴ CGI α ٸ ϱ MIME-type ؾ Ѵٴ ̴. HTTP Ŭ̾Ʈ Ŭ̾Ʈ ްԵ ̸ ˸. .
Content-type: text/html
ι° ̴ HTML Ȥ ִ ؾ Ѵٴ ̴. κ HTML , gif HTML ƴ ϴ CGI α ۼϴ 쵵 ִ.
ΰ ϰ CGI α ۼ ̹ ٸ α ſ ϴ.
CGI α .
״ first.pl
̶ Ͽ ϰ,
cgi-bin
丮 Ѵ.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Perl ͼ ʴ Ͼ
ִ. ù° ġ(Ȥ ϴ )
/usr/bin/perl
ġ ִ Ͽ
α ϶ ˸. ι°
content-type ϰ carriage-return ٹٲ
ι Ѵ. ڿ HTTP ϴ
, Ѵ. ° "Hello, World."
ڿ Ѵ. ̰ ̴.
ϰ ּҸ ԷѴ
http://www.example.com/cgi-bin/first.pl
Ҹ Էϸ, â Hello, World.
δ. е , ѹ ϴ
ٸ õ ִ.
CGI α Ҷ ִ ⺻ װ.
Content-Type
Ͽ ȮѴ. Ű ϶.
, ϸ Ư (
nobody
www
) Ѵ.
Ϸ ʿϴ.
Ͽ nobody
ϱ
ֱ ο ش.
chmod a+x first.pl
, α ٸ аų ٸ Ͽ ʿϴ.
α ϸ ڵ
ȴ. , PATH
ã Ҹ ˷ش.
α CGI α Ҷ
PATH
ٸ ִ. ( ,
sendmail
) CGI α ȿ ϴ
ɾ η ؾ ɾ ã
ִ.
CGI α ù° ٿ
ũƮ ( perl
) ο
Ѵ.
#!/usr/bin/perl
ȮѴ.
, CGI α ٸ ȯ溯 Ѵٸ ġ α ؾ Ѵ.
CGI α ϴ κ α ü ̴. Ư ΰ Ǽ ʾҰ ִٸ . ϱ α غ. , Ѵ.
cd /usr/local/apache2/cgi-bin
./first.pl
(perl
.
ġ ũƮ ù° ٿ ִ Ͽ
ãƾ Ѵ.)
α Content-Type
HTTP ϰ ؾ Ѵ. ٸ
Ѵٸ ġ Premature
end of script headers
ȯѴ. ڼ
CGI α ۼϱ ϶.
α״ ̴. ߸Ǹ α . α Ѵ. Ʈ ȣϴ α ϰ Ѵٸ, Ƹ ٸ ü ˾ƺ Ѵ. α , κ ľϿ ذ ִ.
suexec α
ϸ ȣƮ Ȥ 丮 ִ
CGI α ٸ ִ.
Suexec ſ ϰ ˻ϸ, ˻縦 ϳ
ϸ CGI α ʰ Premature
end of script headers
ȯѴ.
suexec ϰ ִ ˷ apachectl -V
Ͽ SUEXEC_BIN
ġ ȮѴ. ġ
Ҷ ҿ suexec ߰ϸ, suexec
ִ.
suexec ߴٸ ؼ ȵȴ.
suexec SUEXEC_BIN
ġ
ִ suexec
(Ȥ ϸ
ٲٰ) ϸ ȴ. suexec
ϰ ʹٸ, suexec -V
Ͽ suexec
α ġ ˾Ƴ αϿ Ģ
ִ ã´.
CGI αֿ ͼ ڿ ϸ ȴ. ü ϴ ϴ ̴. "Hello, World." ϴ α ۼ ̷ α ̴.
ȯ溯 ǻ ϴ
ٴϴ ̴. ȯ溯 path (ǻͰ Է
ɾ شϴ ã ), ڸ, ̳
. Ϲ ȯ溯
Ʈ env
ԷѴ.
CGI Ҷ ȯ溯 ȯѴ. (Netscape, IE, Lynx), (ġ, IIS, WebSite), ϴ CGI α ִ.
CGI αӴ ̷ ְ, ȯ溯 Ŭ̾Ʈ- ſ Ϻκ Ѵ. ü ʼ http://hoohoo.ncsa.uiuc.edu/cgi/env.html ִ.
Ʒ Perl CGI α ڽſ
ȯ溯 ش. ġ cgi-bin
丮 ̿ α ΰ ִ.
ʼ̰ ̴. Ͽ
δ. , ġ ⺻ ϴ ȯ溯
ܿ ȯ溯
߰ ִ.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}<br>";
}
, Ŭ̾Ʈ ǥԷ(STDIN
)
ǥ(STDOUT
) Ѵ. ϻ
STDIN
Ű峪 α óϴ
Ÿ, STDOUT
ܼ̳ ȭ Ѵ.
CGI α (form) POST
ϸ
Ŀ Է ڷḦ Ư CGI α
STDIN
Ѵ. α Ű峪
Ͽ ڷḦ óϵ ڷḦ ó ִ.
"Ư " ſ ϴ. ̸ ȣ(=) ϰ, ̸ ֵ ۻ(&) Ѵ. , ۻ, ȣ ڿ ڴ ȥ ʵ 16 ȯѴ. ڷ ڿ .
name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
URL ڿ ̷ ڿ ȴ.
ڿ QUERY_STRING
̶ ȯ溯 Ѵ.
̸ GET
û̶ Ѵ. FORM
± METHOD
Ӽ Ͽ HTML (form)
ڷḦ GET
POST
Ѵ.
α ̷ ڿ ɰ Ѵ. ̷ ڷ ó CGI α ٸ Ǵ ̺귯 ִ.
CGI α ۼҶ ۾ ִ ڵ ̺귯 Ȥ غ Ѵ. ̷ ϸ װ ٰ α ִ.
Perl CGI α ۼѴٸ CPAN ã
ִ. CGI ߿ θ Ǵ
CGI.pm
̴. κ α ּ
CGI::Lite
ִ.
C CGI α ۼѴٸ .
ϳ http://www.boutell.com/cgic/
ִ CGIC
̺귯.
ſ CGI ִ. comp.infosystems.www.authoring.cgi CGI ִ. HTML Writers Guild -servers ϸƮ ã Ǹ Ҵ. http://www.hwg.org/lists/hwg-servers/ ִ.
CGI α ۿ CGI Ծ о . NCSA ְ, ʾ Common Gateway Interface RFC Ʈ ִ.
ϸƮ 쿡 ݰ ִ CGI Ҷ , ٸ, ϴ , CGI α ۼ , ϸ ش ڵ带 ڼ . ذå ã .
ġ ҽڵ尡 ߸Ǿٰ Ȯ ʴ CGI ġ ͺ̽ ø ȵȴ.