<-
Apache > HTTP Server > Documentation > Version 2.2 > How-To / Tutorials

Please note

This document refers to the 2.2 version of Apache httpd, which is no longer maintained. The active release is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

¾ÆÆÄÄ¡ ÅõÅ丮¾ó: CGI¸¦ »ç¿ëÇÑ µ¿Àû ÆäÀÌÁö »ý¼º

°¡´ÉÇÑ ¾ð¾î:  en  |  ja  |  ko 

ÀÌ ¹®¼­´Â ÃÖ½ÅÆÇ ¹ø¿ªÀÌ ¾Æ´Õ´Ï´Ù. ÃÖ±Ù¿¡ º¯°æµÈ ³»¿ëÀº ¿µ¾î ¹®¼­¸¦ Âü°íÇϼ¼¿ä.
top

¼Ò°³

CGI (Common Gateway Interface)´Â À¥¼­¹ö°¡ º¸Åë CGI ÇÁ·Î±×·¥ ȤÀº CGI ½ºÅ©¸³Æ®¶ó°í ºÎ¸£´Â, (À¥ÆäÀÌÁö ³»¿ëÀ» ¸¸µå´Â) ¿ÜºÎ ÇÁ·Î±×·¥°ú Åë½ÅÇÏ´Â ¹æ¹ýÀ» Á¤ÀÇÇÑ´Ù. À¥»çÀÌÆ®¿¡¼­ µ¿ÀûÀÎ ÆäÀÌÁö¸¦ ¸¸µå´Â °¡Àå ÈçÇÏ°í °£´ÜÇÑ ¹æ¹ýÀÌ´Ù. ÀÌ ¹®¼­´Â ¾ÆÆÄÄ¡ À¥¼­¹ö¿¡ CGI¸¦ ±¸¼ºÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÏ°í, CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇغ»´Ù.

top

CGI¸¦ Çã¿ëÇϵµ·Ï ¾ÆÆÄÄ¡ ¼³Á¤Çϱâ

CGI ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù·Î µ¿ÀÛÇÏ·Á¸é CGI ½ÇÇàÀÌ °¡´ÉÇϵµ·Ï ¾ÆÆÄÄ¡¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö´Ù.

ScriptAlias

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 ÆÄÀÏÀ» ½ÇÇàÇÏ¿© °á°ú¸¦ ¹ÝȯÇÑ´Ù. ¹°·Ð ÆÄÀÏÀÌ Á¸ÀçÇÏ°í ½ÇÇà°¡´ÉÇÏ¸ç ¾î¶² ¹æ¹ýÀ¸·Îµç Ãâ·ÂÀ» ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¾ÆÆÄÄ¡´Â ¿À·ù¹®À» º¸³½´Ù.

ScriptAlias µð·ºÅ丮 ¹Û¿¡ ÀÖ´Â CGI

º¸Åë º¸¾È»ó ÀÌÀ¯¶§¹®¿¡ CGI ÇÁ·Î±×·¥Àº ScriptAliasÇÑ µð·ºÅ丮¿¡ ÇÑÁ¤ÇÑ´Ù. ±×·¡¼­ °ü¸®ÀÚ´Â ´©°¡ CGI ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ¾ö°ÝÈ÷ °¨µ¶ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª Àû´çÇÑ º¸¾ÈÁ¶Ä¡¸¦ ÃëÇß´Ù¸é ¾Æ¹« µð·ºÅ丮¿¡¼­³ª CGI ÇÁ·Î±×·¥À» ½ÇÇàÇÏÁö ¾ÊÀ» ÀÌÀ¯°¡ ¾ø´Ù. ¿¹¸¦ µé¾î, UserDir Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ È¨µð·ºÅ丮¿¡ À¥ÆäÀÌÁö¸¦ °¡Áö´Â °æ¿ì¸¦ °¡Á¤ÇÏÀÚ. »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ CGI ÇÁ·Î±×·¥À» »ç¿ëÇÏ°í ½ÍÀºµ¥ cgi-bin µð·ºÅ丮¿¡ Á¢±Ù±ÇÇÑÀÌ ¾ø´Ù¸é, ´Ù¸¥ °÷¿¡¼­¶óµµ CGI ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í ½ÍÀ» °ÍÀÌ´Ù.

¾Æ¹« µð·ºÅ丮¿¡¼­³ª CGI ½ÇÇàÀ» Çã¿ëÇÏ·Á¸é µÎ °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ¸ÕÀú, AddHandler³ª SetHandler Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© cgi-script Çڵ鷯¸¦ ÀÛµ¿ÇØ¾ß ÇÑ´Ù. µÎ¹ø°·Î, Options Áö½Ã¾î¿¡ ExecCGI¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

Options¸¦ »ç¿ëÇÏ¿© ¸í½ÃÀûÀ¸·Î CGI ½ÇÇàÀ» Çã¿ëÇϱâ

¼­¹öÀÇ ÁÖ¼³Á¤ÆÄÀÏ¿¡ Á÷Á¢ Options Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© ƯÁ¤ µð·ºÅ丮¿¡¼­ CGI ½ÇÇàÀ» Çã¿ëÇÒ ¼ö ÀÖ´Ù.

<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>

À§ Áö½Ã¾î·Î ¾ÆÆÄÄ¡´Â CGI ÆÄÀÏÀÇ ½ÇÇàÀ» Çã¿ëÇÑ´Ù. ¾î¶² ÆÄÀÏÀÌ CGI ÆÄÀÏÀÎÁöµµ ¼­¹ö¿¡°Ô ¾Ë·Á¾ß ÇÑ´Ù. ´ÙÀ½ AddHandler Áö½Ã¾î´Â ¼­¹ö¿¡°Ô È®ÀåÀÚ°¡ cgi³ª plÀÎ ÆÄÀÏÀº ¸ðµÎ CGI ÇÁ·Î±×·¥À̶ó°í ¾Ë¸°´Ù.

AddHandler cgi-script .cgi .pl

.htaccess ÆÄÀÏ

.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>

top

CGI ÇÁ·Î±×·¥ ÀÛ¼ºÇϱâ

``ÀϹÝÀûÀÎ'' ÇÁ·Î±×·¡¹Ö°ú CGI ÇÁ·Î±×·¡¹Ö »çÀÌ¿¡´Â µÎ°¡Áö ÁÖµÈ Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù.

ù¹ø° Â÷ÀÌ´Â CGI ÇÁ·Î±×·¥Àº ´Ù¸¥ Ãâ·ÂÀ» ÇϱâÀü¿¡ ¸ÕÀú MIME-type Çì´õ¸¦ Ãâ·ÂÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. HTTP Çì´õ´Â Ŭ¶óÀ̾ðÆ®¿¡°Ô Ŭ¶óÀ̾ðÆ®°¡ ¾î¶² ³»¿ëÀ» ¹Þ°ÔµÉÁö ¹Ì¸® ¾Ë¸°´Ù. º¸Åë ´ÙÀ½°ú °°´Ù.

Content-type: text/html

µÎ¹ø° Â÷ÀÌ´Â HTML ȤÀº ºê¶ó¿ìÀú°¡ º¸¿©ÁÙ ¼ö ÀÖ´Â Çü½ÄÀ¸·Î Ãâ·ÂÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. ´ëºÎºÐÀÇ °æ¿ì HTMLÀ» Ãâ·ÂÇÏÁö¸¸, ¶§¶§·Î gif ±×¸²°ú °°ÀÌ HTMLÀÌ ¾Æ´Ñ ³»¿ëÀ» Ãâ·ÂÇÏ´Â CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °æ¿ìµµ ÀÖ´Ù.

µÎ°¡Áö¸¦ Á¦¿ÜÇÏ°í´Â 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. ÇÑ ÁÙÀÌ º¸ÀδÙ. ÈïºÐµÇÁö´Â ¾ÊÁö¸¸, Çѹø µ¿ÀÛÇÏ´Â °ÍÀ» º¸¾ÒÀ¸´Ï ÀÌÁ¦ ´Ù¸¥ °ÍÀ» ½ÃµµÇØ º¼ ¼ö ÀÖ´Ù.

top

±×·¯³ª ¾ÆÁ÷ µ¿ÀÛÇÏÁö ¾Ê¾Æ¿ä!

À¥¿¡¼­ CGI ÇÁ·Î±×·¥¿¡ Á¢±ÙÇÒ¶§ ºê¶ó¿ìÀú¿¡ ³ª¿Ã ¼ö ÀÖ´Â ³»¿ëÀº ±âº»ÀûÀ¸·Î ³×°¡Áö´Ù.

CGI ÇÁ·Î±×·¥ÀÇ Ãâ·Â
ÁÁ´Ù! ¸ðµç °ÍÀÌ Àß µ¿ÀÛÇÑ´Ù´Â ¶æÀÌ´Ù. Ãâ·ÂÀº Á¤È®ÇÏÁö¸¸ ºê¶ó¿ìÀú°¡ ¿Ã¹Ù·Î ó¸®ÇÏÁö ¸øÇÑ´Ù¸é, CGI ÇÁ·Î±×·¥¿¡¼­ ¿Ã¹Ù¸¥ Content-TypeÀ» ¼³Á¤ÇÏ¿´´ÂÁö È®ÀÎÇÑ´Ù.
CGI ÇÁ·Î±×·¥ ¼Ò½ºÄÚµå ȤÀº "POST Method Not Allowed" ¹®±¸
CGI ÇÁ·Î±×·¥À» ½ÇÇàÇϵµ·Ï ¾ÆÆÄÄ¡¸¦ ÀûÀýÈ÷ ¼³Á¤ÇÏÁö ¾Ê¾Ò´Ù´Â ¶æÀÌ´Ù. ¾ÆÆÄÄ¡ ¼³Á¤Çϱâ ÀýÀ» ´Ù½Ã ÀÐ°í »©¸ÔÀº ºÎºÐÀÌ ÀÖ´ÂÁö ã¾ÆºÁ¶ó.
"Forbidden"À¸·Î ½ÃÀÛÇÏ´Â ¹®±¸
±ÇÇÑ ¹®Á¦°¡ ÀÖ´Ù´Â ¶æÀÌ´Ù. ¾ÆÆÄÄ¡ ¿À·ù ·Î±×¿Í ¾Æ·¡ ÆÄÀϱÇÇÑ ÀýÀ» È®ÀÎÇ϶ó.
"Internal Server Error"¶ó´Â ¹®±¸
¾ÆÆÄÄ¡ ¿À·ù ·Î±×¸¦ º¸¸é ¾Æ¸¶µµ CGI ÇÁ·Î±×·¥ÀÌ Ãâ·ÂÇÑ ¿À·ù¹®°ú ÇÔ²² "Premature end of script headers"°¡ º¸ÀÏ °ÍÀÌ´Ù. ÀÌ °æ¿ì ¾Æ·¡ ³»¿ëµéÀ» Çϳª¾¿ È®ÀÎÇÏ¿© ¾î¶² ÀÌÀ¯·Î CGI ÇÁ·Î±×·¥ÀÌ ÀûÀýÇÑ HTTP Çì´õ¸¦ Ãâ·ÂÇÏÁö ¸øÇß´ÂÁö ¾Ë¾Æº»´Ù.

ÆÄÀϱÇÇÑ

¼­¹ö´Â ´ç½Å°ú µ¿ÀÏÇÑ °èÁ¤À¸·Î µ¿ÀÛÇÏÁö ¾ÊÀ½À» ¸í½ÉÇ϶ó. Áï, ¼­¹ö°¡ ½ÃÀÛÇÏ¸é ¼­¹ö´Â ºñƯ±Ç »ç¿ëÀÚ ±ÇÇÑ(º¸Åë 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

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 ·Î±×ÆÄÀÏ À§Ä¡¸¦ ¾Ë¾Æ³»°í ·Î±×ÆÄÀÏ¿¡¼­ ´ç½ÅÀÌ ¾î¶² ±ÔÄ¢À» ¾î±â°í ÀÖ´ÂÁö ã´Â´Ù.

top

µÚ¿¡¼­´Â ¹«½¼ ÀÏÀÌ ¹ú¾îÁö´Â°¡?

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)À¸·Î Åë½ÅÇÑ´Ù. ÀÏ»óÀûÀÎ °æ¿ì 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 ÇÁ·Î±×·¥ÀÇ ´Ù¸¥ ¿©·¯ ¸éÀ» »ìÇÇ´Â ¶óÀ̺귯¸®¿Í ¸ðµâµéÀÌ ÀÖ´Ù.

top

CGI ¸ðµâ/¶óÀ̺귯¸®

CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ¶§ Áö·çÇÑ ÀÛ¾÷À» ´ë½ÅÇØÁÖ´Â ÄÚµå ¶óÀ̺귯¸® ȤÀº ¸ðµâÀ» »ç¿ëÇÒÁö °í·ÁÇغÁ¾ß ÇÑ´Ù. ÀÌ·± °ÍÀ» »ç¿ëÇÏ¸é ¹ö±×°¡ ÁÙ°í ´õ »¡¸® ÇÁ·Î±×·¥À» °³¹ßÇÒ ¼ö ÀÖ´Ù.

Perl·Î CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é CPAN¿¡¼­ °ü·Ã ¸ðµâµéÀ» ãÀ» ¼ö ÀÖ´Ù. CGI °³¹ß¿¡ °¡Àå ³Î¸® »ç¿ëµÇ´Â ¸ðµâÀº CGI.pmÀÌ´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥¿¡ ÃæºÐÇÑ ÃÖ¼Ò ±â´ÉÀ» ±¸ÇöÇÑ CGI::Liteµµ °í·ÁÇØ º¼ ¼ö ÀÖ´Ù.

C·Î CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ¼±ÅÃÀÇ ¿©Áö°¡ ¸¹´Ù. ÀÌÁß Çϳª°¡ http://www.boutell.com/cgic/¿¡ ÀÖ´Â CGIC ¶óÀ̺귯¸®´Ù.

top

´õ ¸¹Àº Á¤º¸...

À¥¿¡ ¸Å¿ì ¸¹Àº 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 Áú¹®À» ¾ÆÆÄÄ¡ ¹ö±× µ¥ÀÌÅͺ£À̽º¿¡ ¿Ã¸®¸é Àý´ë·Î ¾ÈµÈ´Ù.

°¡´ÉÇÑ ¾ð¾î:  en  |  ja  |  ko 

top

Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.