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

9 � ¸® CGI� �) � /h1>

�% �  en� |  fr� |  ja� |  ko�

¹® 5 � 5±Ù ó°� �) ¹® � Âü� .

Âü

top

�

CGI (Common Gateway Interface) � �� º¸ CGI á±� � CGI � ¬¸��� ö¸� , (� � �) �) � á±�è°� � ¹æ �,4 � � � � � � �( ¹æ� ¹® 9 � � CGI� ±¸1 ¹æ ��, CGI á±�� � ´º�

top

CGI� � � 9 � �/a>

CGI á±�� � � ¤¸� CGI � �% � 9� �4 � ¹æ �� '

ScriptAlias

ScriptAlias � �) � 9 � ¸® CGI á±��)< 9 ¸® ¸ð � CGI á±��4� � ��48 � 2� � �

ScriptAlias � � � � �)

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

9� ±âº» � � °æ apache2.conf �< �)4 ScriptAliasAlias � � URL �� � ¸® Alias ScriptAlias º¸ DocumentRoot � � ¸® �) Alias ScriptAlias Â÷4 ScriptAlias� 6�� URL ö½� ¸ð � CGI á±��< Ãë � ±× � 9� /cgi-bin/� 2� /usr/local/apache2/cgi-bin/ ¸® ã CGI á±��< 2¸® � ¸°

� � URL http://www.example.com/cgi-bin/test.pl 2� 9 /usr/local/apache2/cgi-bin/test.pl � � °á°ú� � ¹° � Á¸, � � �% � � ¹æ� Ãä � ±× ' ¼¸� 9 � ¹® º¸�

ScriptAlias � � CGI

º¸ º¸ � ¹® CGI á±�� ScriptAlias ¸® ±× ´¸� � CGI á±�� �) ' °Ý � ±×� � º¸ Á¶ � Ãë ¤¸� � ¸® CGI á±�� � ' � � � � UserDir � �) �) � ¸® � � � �' °æ0 �. �) � CGI á±�� �) � � cgi-bin ¸® ±Ù ¤¸�, ¤¸� °÷< CGI á±�� � � � ¬´

� ¸® CGI � � ¤¸� °ú ¸Õ , AddHandler SetHandler � �) cgi-script ��� � òÂ� , OptionsExecCGI� �

Options� �) º¼ CGI � � �/a>

� ÁÖ$< ' Options � �) � ¸® CGI � �


Options +ExecCGI

� 9 CGI � � � � � CGI �8 �� � � AddHandler � �� � � cgi pl � ¸ð CGI á±��4� ¸°

AddHandler cgi-script .cgi .pl

.htaccess /a>

.htaccess � ¸® /a> apache2.conf ±Ù °æ0 CGI á±�� �) ¹æ �

�) �/a>

� �) � �) ¸® .cgi� � CGI á±��< �


Options +ExecCGI
AddHandler cgi-script .cgi

� �) � �) ¸® cgi-bin ¸® ¸ð � CGI á±��< �


Options ExecCGI
SetHandler cgi-script

top

CGI � � �/a>

``� ' á±� �� CGI á±� � �4 �' ÁÖ Â÷4

ù ' Â÷4 CGI á±�� ¤¸� Ãä ±â ¸Õ MIME-type � � Ãä � � � HTTP � ��48 � � ��48 � � �) ��' ¹Ì¸® ¸° º¸ � � �

Content-type: text/html

�' Â÷4 HTML � �<0 � º¸, � Ãä � � � �� °æ HTML Ãä '�, � gif ±×¸²� � HTML �) Ãä CGI á±�� � °æ0

�'� � � CGI á±� � � ¸Å º¸ ¤¸� á±��ä°� ¸Å ¾w

ÿ � CGI � /a>

� �<0 $ 0 CGI á±� ±× � first.pl�� � � �, cgi-bin ¸® º¹,

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

Perl � ' � ¹« � �4 ' ù ' $ 9(� �) )� /usr/bin/perl 9 � � ¸® � �) á±� � � � ¸° �' $ ¹æ � content-type � Ãä � carriage-return $�� � Ãä ±×ì¸� � � HTTP � � �$ ±â , º»¹® � ' $ "Hello, World." ¹®4 Ãä �� �

�<0 � � � ÁÖ � � /p>

http://www.example.com/cgi-bin/first.pl

� � � � �<0 â Hello, World. $ º¸8 � ' '�, � � º¸< � ¤¸� � �

top

±×� ' ' !

� CGI á±�� ±Ù �<0 �) ±âº»� � '

CGI �� 6/dt>
" ¸ð � � �4 Ãä '� �<0 � � � 2¸® ' ¸ø ¤¸�, CGI á±�� � � Content-Type � ' �
CGI á±� � � "POST Method Not Allowed" ¹®±¸
CGI á±�� � � 9� � ' � �4 9 � �/a> � � »©¸Ô �� ' ã �
"Forbidden"� ¹®±¸
� ¹® � � �4 9 � ��/a>
"Internal Server Error"� ¹®±¸
9 � ��/a>� º¸¸é � CGI á±�� Ãä � ¹®°ú � "Premature end of script headers"� º¸ ¬´ °æ �)� � � � � CGI á±�� HTTP � � Ãä ' ¸ø ' º»

� � � � °ú ' ¸ó &, �� � � ¾y �) �(º¸ nobody www)� ±× � � � ¤¸� � � nobody� � ±â Ãæ � Áֱ⠺¸ ¸ð � � � � $

chmod a+x first.pl

, á±�� ¤¸� � ½°� �ä¸� � �

°æ º¸ �/a>

¸÷ á±�� � � � � º¸ � � � � PATH � � � � ã � � �

� �� á±�� CGI á±��< � PATH� � (� � sendmail � CGI á±� � ¸÷4 °æ � º´ ¸÷4 ã

°æ ¹® � � � CGI á±� ù ' $ � � ¬¸� � � ¸® (º¸ perl) °æ # �

#!/usr/bin/perl

� � � � ¸® � °æ� �

, CGI á±�� ¤¸� °æ � �) ¤¸� 9� ¼ä á±�� � � �

� �

CGI á±�� � � °æ �� á±� 2 ¹® ¹®4 � �' � � ' � � � º¸ ¤¸� ±× ¸Õ � � � � ¸÷ á±�� � ´º� � � � � � �

cd /usr/local/apache2/cgi-bin
./first.pl

(perl � � ¸® � � ' � � 9 � ¬¸� ù ' $ °æ �/a>� �) � � ¸® � ã )

á±�� ¸Õ Content-Type � � HTTP �� Ãä � � $ Ãä � ¤¸� � Ãä ¤¸� � � � °æ 9 Premature end of script headers� � � �) CGI á±� � �/a>� Âü

� ��/a>

� á±� � �4 ¹«8 ¸ø � � á±� ¹®±¸� ±ä � á±� ¸Õ � � �,4 � �$ °÷ � á±� º¸ ¸ø � ¤¸�, � ¤¸� ü � � á±� º¸ ¹æ � � �� ¹® � »¡¸® ´°�

Suexec

suexec ' á±�� �) � � °¼$ � � �) ¸® ' � CGI á±�� ¤¸� �) � � Suexec ¸Å °Ý � � °ß � °ß � µ°�' ¸ø � CGI á±�� � ' � Premature end of script headers� �

suexec� �) � ' ¤¸� apache2ctl -V� � SUEXEC_BIN 9� � 9� � � suexec � � ð°� � suexec� �)

suexec� � � ' ¸ø ¤¸� �) � suexec� �) ' �ä¸� SUEXEC_BIN 9 suexec � � ® (� � ð²� ) �� � � suexec � � ±× �) � �ä¸�, suexec -V� � suexec á±� 9� � á±� � � � �9 ´±�� ' ã

top

� ¹« � º« �?

CGI á±� � �4 � � º« � � � � ±¸Ã¼� �<0 �� � � ¹æ � ¬´ ¸ô� "Hello, World."� Ãä á±�� � '� � á±�� �� ¸¸�� ±â ¹®4

°æ

°æ � ÄÄ � � �) � ÁÖ � � �4 °æ path (ÄÄ � � � � ¸÷4 �� � � ã � ), �) �, � "� � � º¸ � °æ � ¸ð º¸ä¸� ¸÷ ·Ò � env� �

CGI� � � �<0 � °æ � � � º¸ �<0 "� (Netscape, IE, Lynx), � "� (9, IIS, WebSite), � CGI á±�� �

CGI á±� ¸Ó � ¼ä �) �, °æ ��48 � � � � Â÷ 2 � ¸ñ http://hoohoo.ncsa.uiuc.edu/cgi/env.html

�( Perl CGI á±�� � � ¸ð °æ � º¸, 9 ¹è ¬º� cgi-bin ¸® � ¾w á±�� � �� � � ¸Ó � ±× °ø ¸ñ � º¸8 , 9 ±âº»� °ø °æ � �� ' ¹æ� ' °æ � 6� /a>.

#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}
";
}

STDIN� STDOUT

, � ��48 � $STDIN)� $6STDOUT)� � � °æ STDIN ¤º� á±�� 2¸® � � , STDOUT º¸ Ää ¸é �

CGI á±�� � (form) POST� � �� � � ¹­4 CGI á±�� STDIN� � ±×ì¸� á±�� ¤º� � � �� 2¸® �� 2¸®

"� " ¸Å �( �� � � � � =)� °°��, �� � � � � � � � (&)� °°� °ø¹é, � � , � � ºÝ$� ¹® � ' � 16'� � � ¹®4 � � � °å

name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey

"" URL � � ¹®4 º¸ °æ � ¹®4 QUERY_STRING�� °æ � � GET ü� FORM ±× METHOD � ' HTML (form) �� GET' POST' °á

� á±�� � ¹®4 � º¸ ÂÉ � � � 2¸® � CGI á±�� ¤¸� � ¸é � � �4ì¸� ¸ð�

top

CGI ¸ð /�4ì¸�

CGI á±�� � '·ç ´Á� = �4ì¸� � ¸ð �) ' °ï � � � �) � ò±� $� »¡¸® á±�� ��

Perl� CGI á±�� � ¤¸� CPAN � ¸ð� ã CGI �� � � �) ¸ð CGI.pm� �� á±�� Ãæ 5 ±â� ±¸ CGI::Lite °ï �

C� CGI á±�� � ¤¸� � � � � � http://www.boutell.com/cgic/ CGIC �4ì¸�

top

� �..

� ¸Å � CGI º¸ �$±×� comp.infosystems.www.authoring.cgi � �ä°� CGI ¹® � � HTML Writers Guild -servers �| ¸®$ � '¹® � ã±â � � http://www.hwg.org/lists/hwg-servers/ � �

±×¸®� ¹° CGI á±� ¸ð �) � CGI � �4 ' ¸ð¸¥ NCSA � ¹® � �, 4 Common Gateway Interface RFC ·Ö

�| ¸®$ � �$±×·ì °Ý CGI ¹® '¹® � � ±â °á°ú, � � � �� ¤¸�', �) �, CGI á±�� � � �% � � =� � � ±×ì¸� ´°�1 ã±â � '

9 � � ¸ø� ' CGI '¹® 9 �� �4 ��$ ¬¸�� �

�% �  en� |  fr� |  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 Freenode, or sent to our mailing lists.