blob: 7e90d40eb4577651429ace598212925c75a2ff5c [file] [log] [blame]
<?xml version="1.0" encoding="EUC-JP"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Apache Tutorial: CGI ¤Ë¤è¤ëưŪ¥³¥ó¥Æ¥ó¥Ä - Apache HTTP ¥µ¡¼¥Ð</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">¥â¥¸¥å¡¼¥ë</a> | <a href="../mod/directives.html">¥Ç¥£¥ì¥¯¥Æ¥£¥Ö</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">ÍѸì</a> | <a href="../sitemap.html">¥µ¥¤¥È¥Þ¥Ã¥×</a></p>
<p class="apache">Apache HTTP ¥µ¡¼¥Ð ¥Ð¡¼¥¸¥ç¥ó 2.1</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP ¥µ¡¼¥Ð</a> &gt; <a href="http://httpd.apache.org/docs-project/">¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó</a> &gt; <a href="../">¥Ð¡¼¥¸¥ç¥ó 2.1</a> &gt; <a href="./">How-To / ¥Á¥å¡¼¥È¥ê¥¢¥ë</a></div><div id="page-content"><div id="preamble"><h1>Apache Tutorial: CGI ¤Ë¤è¤ëưŪ¥³¥ó¥Æ¥ó¥Ä</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/howto/cgi.html" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">¤Ï¤¸¤á¤Ë</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#configuring">CGI ¤òµö²Ä¤¹¤ë¤è¤¦¤Ë Apache ¤òÀßÄꤹ¤ë</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#writing">CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">¤·¤«¤·¡¢¤Þ¤ÀÆ°¤«¤Ê¤¤ !</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">΢¤Ç²¿¤¬µ¯¤³¤Ã¤Æ¤¤¤ë¤Î¤«?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#libraries">CGI ¥â¥¸¥å¡¼¥ë/¥é¥¤¥Ö¥é¥ê</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">¹¹¤Ê¤ë¾ðÊó</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="intro" id="intro">¤Ï¤¸¤á¤Ë</a></h2>
<table class="related"><tr><th>´ØÏ¢¥â¥¸¥å¡¼¥ë</th><th>´ØÏ¢¥Ç¥£¥ì¥¯¥Æ¥£¥Ö</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li></ul></td></tr></table>
<p>CGI (Common Gateway Interface) ¤Ï¡¢¥¦¥§¥Ö¥µ¡¼¥Ð¤¬
¥³¥ó¥Æ¥ó¥ÄÀ¸À®¤ò¤¹¤ë³°Éô¥×¥í¥°¥é¥à¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¤¿¤á¤ÎÊýË¡¤ò
ÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤Î¥×¥í¥°¥é¥à¤Ï¤·¤Ð¤·¤Ð CGI ¥×¥í¥°¥é¥à¤ä
CGI ¥¹¥¯¥ê¥×¥È¤È¸Æ¤Ð¤ì¤Þ¤¹¡£CGI ¤Ï¡¢¥¦¥§¥Ö¥µ¥¤¥È¤ËưŪ¤Ê
¥³¥ó¥Æ¥ó¥Ä¤òÃÖ¤¯¤¿¤á¤ÎºÇ¤â´Êñ¤Ç°ìÈÌŪ¤ÊÊýË¡¤Ç¤¹¡£¤³¤Î¥É¥­¥å¥á¥ó¥È¤Ï¡¢
Apache ¥¦¥§¥Ö¥µ¡¼¥Ð¤Ç CGI ¤òÀßÄꤷ¡¢
CGI ¥×¥í¥°¥é¥à¤ò½ñ¤­»Ï¤á¤ë¤¿¤á¤ÎÆþÌç½ñ¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡£</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="configuring" id="configuring">CGI ¤òµö²Ä¤¹¤ë¤è¤¦¤Ë Apache ¤òÀßÄꤹ¤ë</a></h2>
<p>CGI ¥×¥í¥°¥é¥à¤òÀµ¤·¤¯Æ°ºî¤µ¤»¤ë¤Ë¤Ï¡¢CGI ¤òµö²Ä¤¹¤ë¤è¤¦¤Ë
Apache ¤ÎÀßÄê¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤ò¹Ô¤Ê¤¦¤¿¤á¤ÎÊýË¡¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£</p>
<h3><a name="scriptalias" id="scriptalias">ScriptAlias</a></h3>
<p><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ò»ÈÍѤ·¤Æ¡¢
CGI ¥×¥í¥°¥é¥àÍѤÎÆÃÊ̤ÊÊ̥ǥ£¥ì¥¯¥È¥ê¤ò Apache ¤ËÀßÄꤷ¤Þ¤¹¡£
Apache ¤Ï¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥êÃæ¤ÎÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò CGI
¥×¥í¥°¥é¥à¤Ç¤¢¤ë¤È²¾Äꤷ¤Þ¤¹¡£
¤½¤·¤Æ¡¢¤³¤ÎÆÃÊ̤ʥ꥽¡¼¥¹¤¬¥¯¥é¥¤¥¢¥ó¥È¤«¤éÍ׵ᤵ¤ì¤ë¤È¡¢
¤½¤Î¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤ò»î¤ß¤Þ¤¹¡£</p>
<p><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï°Ê²¼¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹:</p>
<div class="example"><p><code>
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
</code></p></div>
<p>¥Ç¥Õ¥©¥ë¥È°ÌÃÖ¤Ë Apache ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤Ê¤é¤Ð¡¢
¤³¤ÎÎã¤Ï¥Ç¥Õ¥©¥ë¥È¾õÂ֤Π<code>httpd.conf</code>
ÀßÄê¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¡¢URL ¤ÎÁ°¤ËÉղ乤ë¥Ç¥£¥ì¥¯¥È¥ê¤òÄêµÁ¤¹¤ë
<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤È¤«¤Ê¤ê»÷¤Æ¤¤¤Þ¤¹¡£
<code class="directive">Alias</code> ¤È <code class="directive">ScriptAlias</code>
¤ÏÄ̾<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
¥Ç¥£¥ì¥¯¥È¥ê³°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
<code class="directive">Alias</code> ¤È <code class="directive">ScriptAlias</code>
¤È¤Îº¹¤Ï¡¢<code class="directive">ScriptAlias</code> ¤¬ÀÜƬ¼­¤Ç»Ï¤Þ¤ë¤¹¤Ù¤Æ¤Î
URL ¤Ï CGI ¥×¥í¥°¥é¥à¤È¤ß¤Ê¤µ¤ì¤ë¤È¤¤¤¦ÄɲäΰÕÌ£¤ò´Þ¤ó¤Ç¤¤¤ë¤³¤È¤Ç¤¹¡£
½¾¤Ã¤Æ¡¢¾åµ­¤ÎÎã¤Ç¤Ï¡¢<code>/cgi-bin/</code>
¤Ç»Ï¤Þ¤ë¥ê¥½¡¼¥¹¤Ø¤Î¤¢¤é¤æ¤ë¥ê¥¯¥¨¥¹¥È¤ËÂФ·¤Æ¡¢¥Ç¥£¥ì¥¯¥È¥ê
<code>/usr/local/apache2/cgi-bin/</code> ¤«¤éÄ󶡤·¡¢¤½¤ì¤é¤ò
CGI ¥×¥í¥°¥é¥à¤È¤·¤Æ°·¤¦¤è¤¦ Apache ¤Ë¼¨¤·¤Þ¤¹¡£</p>
<p>Î㤨¤Ð¡¢URL <code>http://dev.rcbowen.com/cgi-bin/test.pl</code>
¤¬Í׵ᤵ¤ì¤¿¾ì¹ç¡¢Apache ¤Ï ¥Õ¥¡¥¤¥ë
<code>/usr/local/apache2/cgi-bin/test.pl</code>
¤ò¼Â¹Ô¤·¡¢¤½¤Î½ÐÎϤòÊÖ¤¹¤³¤È¤ò»î¤ß¤Þ¤¹¡£
¤â¤Á¤í¤ó¡¢¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢¼Â¹Ô²Äǽ¤Ç¤¢¤ê¡¢·è¤á¤é¤ì¤¿ÊýË¡¤Ç½ÐÎϤòÊÖ¤·¤Þ¤¹¡£
¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢Apache ¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÊÖ¤·¤Þ¤¹¡£</p>
<h3><a name="nonscriptalias" id="nonscriptalias">ScriptAlias ¥Ç¥£¥ì¥¯¥È¥ê³°¤Î CGI</a></h3>
<p>CGI ¥×¥í¥°¥é¥à¤Ï¡¢¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤«¤é
<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
¤µ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ËÀ©¸Â¤µ¤ì¤ë¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤¹¡£¤³¤ÎÊýË¡¤Ë¤è¤ê¡¢
CGI ¥×¥í¥°¥é¥à¤ò»ÈÍѤǤ­¤ë¥æ¡¼¥¶¤ò´ÉÍý¼Ô¤¬¸·¤·¤¯À©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤·¤«¤·¤Ê¤¬¤é¡¢Å¬Àڤʥ»¥­¥å¥ê¥Æ¥£»öÁ°Âкö¤¬¤È¤é¤ì¤ë¤Ê¤é¤Ð¡¢CGI
¥×¥í¥°¥é¥à¤òǤ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¼Â¹Ô¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¤¹¤ëÍýͳ¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Î㤨¤Ð¡¢¥æ¡¼¥¶¤Ë <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÇÈà¤é¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥êÇÛ²¼¤Ë¥¦¥§¥Ö¥³¥ó¥Æ¥ó¥Ä¤ò»ý¤¿¤»¤¿¤¤¤È¤·¤Þ¤¹¡£
¤â¤·¡¢Èà¤é¤¬ CGI ¥×¥í¥°¥é¥à¤ò»ý¤Ä¤³¤È¤ò˾¤ó¤Ç¤¤¤Æ¤â¡¢¥á¥¤¥ó¤Î
<code>cgi-bin</code> ¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤Î¥¢¥¯¥»¥¹¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¡¢
CGI ¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¾¤Î¾ì½ê¤¬É¬Íפˤʤê¤Þ¤¹¡£</p>
<p>Ǥ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç CGI ¤Î¼Â¹Ô¤òµö²Ä¤¹¤ë¤Ë¤ÏÆóÃʳ¬¤ÎÀßÄ꤬ɬÍפǤ¹¡£
¤Þ¤º¡¢<code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> ¤ä <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code> ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ë¤è¤Ã¤Æ
<code>cgi-script</code> ¥Ï¥ó¥É¥é¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¼¡¤Ë¡¢<code class="directive"><a href="../mod/core.html#options">Options</a></code> ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ç
<code>ExecCGI</code> ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£</p>
<h3><a name="options" id="options">CGI ¤Î¼Â¹Ô¤ò²Äǽ¤Ë¤¹¤ë¤¿¤á¤Ë Options ¤òÌÀ¼¨Åª¤Ë»ÈÍѤ¹¤ë</a></h3>
<p>¥µ¡¼¥Ð¤Î¥á¥¤¥ó¤ÎÀßÄê¥Õ¥¡¥¤¥ëÃæ¤Ç <code class="directive"><a href="../mod/core.html#options">Options</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤òÌÀ¼¨Åª¤Ë»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ÆÃÄê¤Î¥Ç¥£¥ì¥¯¥È¥êÇÛ²¼¤Ç
CGI ¤Î¼Â¹Ô¤òµö²Ä¤¹¤ë¤è¤¦¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹:</p>
<div class="example"><p><code>
&lt;Directory /usr/local/apache2/htdocs/somedir&gt;<br />
<span class="indent">
Options +ExecCGI<br />
</span>
&lt;/Directory&gt;
</code></p></div>
<p>¾åµ­¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï¡¢CGI ¥Õ¥¡¥¤¥ë¤Î¼Â¹Ô¤ò²Äǽ¤Ë¤¹¤ë¤è¤¦
Apache ¤ËÅÁ¤¨¤Þ¤¹¡£¤Þ¤¿¡¢¤É¤Î¥Õ¥¡¥¤¥ë¤¬ CGI ¥Õ¥¡¥¤¥ë¤«¤ò
¥µ¡¼¥Ð¤ËÅÁ¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤Î
<code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code>
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÎÎã¤Ç¤Ï¡¢<code>cgi</code> ¤Þ¤¿¤Ï <code>pl</code>
¤ò³ÈÄ¥»Ò¤Ë»ý¤Ä¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò CGI
¥×¥í¥°¥é¥à¤È¤·¤Æ¤ß¤Ê¤¹¤³¤È¤ò¥µ¡¼¥Ð¤ËÅÁ¤¨¤Þ¤¹:</p>
<div class="example"><p><code>
AddHandler cgi-script .cgi .pl
</code></p></div>
<h3><a name="htaccess" id="htaccess">.htaccess files</a></h3>
<p><a href="htaccess.html"><code>.htaccess</code> ¥Á¥å¡¼¥È¥ê¥¢¥ë</a>
¤Ï <code>httpd.conf</code> ¤òÊѹ¹¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤É¤¦¤ä¤Ã¤Æ CGI ¥×¥í¥°¥é¥à¤ò
»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤«¤òÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£</p>
<h3><a name="userdir" id="userdir">User ¥Ç¥£¥ì¥¯¥È¥ê</a></h3>
<p><code>.cgi</code> ¤Ç½ª¤ï¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ CGI ¥×¥í¥°¥é¥à¤Î
¼Â¹Ô¤òµö²Ä¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤ÎÀßÄê¤ò»ÈÍѤǤ­¤Þ¤¹¡£</p>
<div class="example"><p><code>
&lt;Directory /home/*/public_html&gt;<br />
<span class="indent">
Options +ExecCGI<br />
AddHandler cgi-script .cgi<br />
</span>
&lt;/Directory&gt;
</code></p></div>
<p>¥æ¡¼¥¶¥Ç¥£¥ì¥¯¥È¥ê¤Î <code>cgi-bin</code> ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î
¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò CGI ¥×¥í¥°¥é¥à¤È¤·¤Æ»ØÄꤷ¤¿¤¤¾ì¹ç¤Ë¤Ï
°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤ò»È¤¤¤Þ¤¹¡£</p>
<div class="example"><p><code>
&lt;Directory /home/*/public_html/cgi-bin&gt;<br />
<span class="indent">
Options ExecCGI<br />
SetHandler cgi-script<br />
</span>
&lt;/Directory&gt;
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="writing" id="writing">CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯</a></h2>
<p>¡ÖÄ̾ï¤Î¡×¥×¥í¥°¥é¥ß¥ó¥°¤È CGI
¥×¥í¥°¥é¥ß¥ó¥°¤Î´Ö¤Ë¤Ï¼ç¤ËÆó¤Ä¤Î°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£</p>
<p>°ì¤Ä¤Ï¡¢CGI ¥×¥í¥°¥é¥à¤Î¤¹¤Ù¤Æ¤Î½ÐÎÏ¤Ë¤Ï MIME-type
¥Ø¥Ã¥À¤òÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
¤³¤ì¤Ï¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥³¥ó¥Æ¥ó¥Ä¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¤«¤ò¥¯¥é¥¤¥¢¥ó¥È¤Ë¼¨¤¹
HTTP ¥Ø¥Ã¥À¤Ç¤¹¡£¤Û¤È¤ó¤É¤Î¾ì¹ç¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë½ÐÎϤ·¤Þ¤¹:</p>
<div class="example"><p><code>
Content-type: text/html
</code></p></div>
<p>¤â¤¦°ì¤Ä¤Ï¡¢½ÐÎϤò HTML
¤«¡¢¥Ö¥é¥¦¥¶¤¬É½¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë²¿¤«Â¾¤Î·Á¼°¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
ÂçÄñ¤Î¾ì¹ç¤Ï HTML ¤Ç¤·¤ç¤¦¤¬¡¢GIF ¥¤¥á¡¼¥¸¤ä¾¤ÎÈó HTML
¥³¥ó¥Æ¥ó¥Ä¤ò½ÐÎϤ¹¤ë CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤â¤¢¤ë¤Ç¤·¤ç¤¦¡£</p>
<p>¤³¤ì¤éÆóÅÀ°Ê³°¤Ç¤Ï¡¢CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤Ï¡¢
¤¢¤Ê¤¿¤¬½ñ¤¤¤Æ¤¤¤ë¾¤Î¥×¥í¥°¥é¥à¤È¤è¤¯»÷¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£</p>
<h3><a name="firstcgi" id="firstcgi">ºÇ½é¤Î CGI ¥×¥í¥°¥é¥à</a></h3>
<p>¼¡¤Ë¼¨¤¹¤Î¤Ï¡¢¥Ö¥é¥¦¥¶¤Ë 1 ¹Ô°õ»ú¤¹¤ë CGI
¥×¥í¥°¥é¥à¤ÎÎã¤Ç¤¹¡£°Ê²¼¤òÆþÎϤ·¡¢<code>first.pl</code>
¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ËÊݸ¤·¡¢¤½¤ì¤ò <code>cgi-bin</code>
¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤¡£</p>
<div class="example"><p><code>
#!/usr/bin/perl<br />
print "Content-type: text/html\n\n";<br />
print "Hello, World.";
</code></p></div>
<p>Perl ¤ËÀºÄ̤·¤Æ¤¤¤Ê¤¯¤Æ¤â¡¢
²¿¤¬µ¯¤³¤ë¤«¤òÍý²ò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£1 ¹ÔÌܤϡ¢
<code>/usr/bin/perl</code> ¤Ç¸«¤Ä¤±¤é¤ì¤ë¥¤¥ó¥¿¥×¥ê¥¿¤Ë
¤³¤Î¥Õ¥¡¥¤¥ë¤ò¶¡µë¤¹¤ë¤³¤È¤Ç¤³¤Î¥×¥í¥°¥é¥à¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤ò
Apache ¤Ë (¥·¥§¥ë¾å¤Ç¼Â¹Ô¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤Ê¤é¤Ð¡¢¤½¤Î¥·¥§¥ë¤Ë )
¼¨¤·¤Þ¤¹¡£2 ¹ÔÌܤϡ¢Á°½Ò¤·¤¿¤È¤ª¤ê content-type ¤ÎÄêµÁ¤ò°õ»ú¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤ÏÉüµ¢²þ¹Ô¤ÎÆó¤Ä¤ÎÁȤò¸å¤ËÉղä·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥Ø¥Ã¥À¤Î½ª¤ê¤Ë¶õ¹Ô¤¬ÃÖ¤«¤ì¡¢HTTP
¥Ø¥Ã¥À¤Î½ª¤ê¤È¥Ü¥Ç¥£¤Î»Ï¤Þ¤ê¤ò¼¨¤·¤Þ¤¹¡£3 ¹ÔÌܤϡ¢"Hello, World."
¤È¤¤¤¦Ê¸»úÎó¤ò°õ»ú¤·¡¢¤³¤ì¤Ç½ª¤ê¤È¤Ê¤ê¤Þ¤¹¡£</p>
<p>¹¥¤ß¤Î¥Ö¥é¥¦¥¶¤ò³«¤­¡¢¥¢¥É¥ì¥¹</p>
<div class="example"><p><code>
http://www.example.com/cgi-bin/first.pl
</code></p></div>
<p>¤¢¤ë¤¤¤Ï¥Õ¥¡¥¤¥ë¤òÃÖ¤¤¤¿¥í¥±¡¼¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢
<code>Hello, World.</code>
¤È¤¤¤¦ 1 ¹Ô¤¬¥Ö¥é¥¦¥¶¥¦¥£¥ó¥É¤Ë¸½¤ì¤ë¤Ç¤·¤ç¤¦¡£
¤½¤ì¤Ï¤¢¤Þ¤ê¥¨¥­¥µ¥¤¥Æ¥£¥ó¥°¤Ê¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤·¤«¤·¡¢¤³¤ì¤¬¤¦¤Þ¤¯Æ°¤±¤Ð¡¢
¾¤Î¤É¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤âÆ°¤«¤¹¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="troubleshoot" id="troubleshoot">¤·¤«¤·¡¢¤Þ¤ÀÆ°¤«¤Ê¤¤ !</a></h2>
<p>¥¦¥§¥Ö¤«¤é CGI ¥×¥í¥°¥é¥à¤Ø¤Î¥¢¥¯¥»¥¹¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¡¢
¥Ö¥é¥¦¥¶¤Ç¸«¤ë²ÄǽÀ­¤¬¤¢¤ë»Í¤Ä¤Î´ðËÜŪ¤Ê¤³¤È¤¬¤¢¤ê¤Þ¤¹:</p>
<dl>
<dt>CGI ¥×¥í¥°¥é¥à¤Î½ÐÎÏ</dt>
<dd>ÁÇÀ²¤é¤·¤¤ ! ¤½¤ì¤Ï¤¹¤Ù¤Æ¤¬¤¦¤Þ¤¯Æ°¤¤¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
½ÐÎϤ¬Àµ¾ï¤À¤±¤ì¤É¤â¡¢¥Ö¥é¥¦¥¶¤¬Àµ¾ï¤Ë½èÍý¤·¤Æ¤¯¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢
Àµ¤·¤¤ <code>Content-Type</code> ¤ò CGI ¥×¥í¥°¥é¥àÆâ¤Ç
¥»¥Ã¥È¤·¤¿¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£</dd>
<dt>CGI ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¡¢¤Þ¤¿¤Ï "POST Method Not Allowed"
¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸</dt>
<dd>¤³¤ì¤Ï¡¢CGI ¥×¥í¥°¥é¥à¤ò½èÍý¤Ç¤­¤ë¤è¤¦ Apache
¤òŬÀÚ¤ËÀßÄꤷ¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£<a href="#configuring">¡ÖCGI ¤òµö²Ä¤¹¤ë¤è¤¦¤Ë
Apache ¤òÀßÄꤹ¤ë¡×</a>¤Î¾Ï¤òÆɤßľ¤·¡¢
¤¢¤Ê¤¿¤¬²¿¤ò´Ö°ã¤¨¤¿¤«¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
</dd>
<dt>¥á¥Ã¥»¡¼¥¸¤¬ "Forbidden" ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë</dt>
<dd>¤³¤ì¤Ï¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÌäÂê¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
<a href="#errorlogs">Apache ¤Î¥¨¥é¡¼¥í¥°</a>¤È¡¢¸å½Ò¤Î<a href="#filepermissions">¡Ö¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¡×</a>
¤Î¾Ï¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
</dd>
<dt>"Internal Server Error" ¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸</dt>
<dd><a href="#errorlogs">Apache
¤Î¥¨¥é¡¼¥í¥°</a>¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤È¡¢"Premature end of script headers"
¤È¤¤¤¦¥í¥°¤¬µ­Ï¿¤µ¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£¤½¤·¤Æ¡¢¤ª¤½¤é¤¯ CGI
¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤âµ­Ï¿¤µ¤ì¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£
¤³¤Î¾ì¹ç¡¢CGI ¥×¥í¥°¥é¥à¤¬Å¬ÀÚ¤Ê
HTTP ¥Ø¥Ã¥À¤ò½ÐÎϤǤ­¤Ê¤¤¸¶°ø¤òÃΤ뤿¤á¤Ë¡¢
°Ê²¼¤Î³Æ¾Ï¤Ç¥Á¥§¥Ã¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£</dd>
</dl>
<h3><a name="permissions" id="permissions">¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó</a></h3>
<p>¥µ¡¼¥Ð¤Ï¤¢¤Ê¤¿¤Î¸¢¸Â¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¡£
¤Ä¤Þ¤ê¡¢µ¯Æ°¤¹¤ë¤È¤­¡¢¥µ¡¼¥Ð¤ÏÆø¢¤ò¤â¤¿¤Ê¤¤¥æ¡¼¥¶ - Ä̾ï <code>nobody</code>
¤ä <code>www</code> ¤Î¸¢¸Â¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤¢¤Ê¤¿¤¬½êÍ­¤¹¤ë
¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤¹¤ë¤Ë¤ÏÊ̤Υѡ¼¥ß¥Ã¥·¥ç¥ó¤¬É¬ÍפȤʤê¤Þ¤¹¡£
Ä̾<code>nobody</code> ¤¬¼Â¹Ô¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÍ¿¤¨¤ëÊýË¡¤Ï¡¢
¥Õ¥¡¥¤¥ë¤Ëï¤Ç¤â¼Â¹Ô²Äǽ¤È¤¹¤ë¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÍ¿¤¨¤ë¤³¤È¤Ç¤¹:</p>
<div class="example"><p><code>
chmod a+x first.pl
</code></p></div>
<p>¤Þ¤¿¡¢¤â¤·¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤¬Â¾¤Î¥Õ¥¡¥¤¥ë¤òÆɤ߽ñ¤­¤¹¤ë¤Ê¤é¤Ð¡¢
¤½¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤³¤ì¤¬²Äǽ¤È¤Ê¤ëÀµ¤·¤¤¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó
¤ò»ý¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£</p>
<h3><a name="pathinformation" id="pathinformation">¥Ñ¥¹¾ðÊó¤È´Ä¶­</a></h3>
<p>¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È¤­¡¢
°Õ¼±¤·¤Ê¤¯¤Æ¤â¥·¥§¥ë¤ËÅϤµ¤ì¤ë¾ðÊ󤬤¢¤ê¤Þ¤¹¡£
Î㤨¤Ð¡¢»²¾È¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¤¿¤á¤Ë¤É¤³¤ò¸¡º÷¤·¤¿¤é¤è¤¤¤«¤ò
¥·¥§¥ë¤ËÅÁ¤¨¤ë <code>PATH</code> ¤¬¤¢¤ê¤Þ¤¹¡£</p>
<p>¥×¥í¥°¥é¥à¤¬ CGI ¥×¥í¥°¥é¥à¤È¤·¤Æ¥¦¥§¥Ö¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ¼Â¹Ô¤µ¤ì¤ë¤È¤­¡¢
¤½¤ì¤ÏƱ¤¸ <code>PATH</code> ¤Ç¤Ï¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
CGI ¥×¥í¥°¥é¥àÆâ¤Ç¸Æ¤Ó½Ð¤¹¤¢¤é¤æ¤ë¥×¥í¥°¥é¥à
(Î㤨¤Ð¡¢<code>sendmail</code> ¤Î¤è¤¦¤Ê¤â¤Î) ¤Ï¡¢
¥Õ¥ë¥Ñ¥¹¤Ç»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£¤½¤ì¤Ë¤è¤ê¡¢CGI
¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¤È¤­¡¢
¥·¥§¥ë¤Ï¤½¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
<p>ƱÍͤʤ³¤È¤Ï¡¢¥¹¥¯¥ê¥×¥È¤Î¥¤¥ó¥¿¥×¥ê¥¿ (¤·¤Ð¤·¤Ð <code>perl</code>)
¤Ø¤Î¥Ñ¥¹¤Ç¡¢CGI ¥×¥í¥°¥é¥à¤Î 1 ¹ÔÌܤ˼¡¤Î¤è¤¦¤Ë¼¨¤µ¤ì¤Þ¤¹:</p>
<div class="example"><p><code>
#!/usr/bin/perl
</code></p></div>
<p>¤³¤ì¤¬¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ø¤Î¼ÂºÝ¤Î¥Ñ¥¹¤Ç¤¢¤ë¤³¤È¤ò³Î¼Â¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£</p>
<h3><a name="syntaxerrors" id="syntaxerrors">¥×¥í¥°¥é¥à¥¨¥é¡¼</a></h3>
<p>CGI
¥×¥í¥°¥é¥à¤¬¼ºÇÔ¤¹¤ë¤Î¤ÏÂçÄñ¡¢¥×¥í¥°¥é¥à¼«¿È¤ËÌäÂ꤬¤¢¤ë¾ì¹ç¤Ç¤¹¡£
°ìÅÙ CGI ¤Î»È¤¤Êý¤òÍý²ò¤·¡¢Á°½Ò¤ÎÆó¤Ä¤Î¸í¤ê¤òÈȤ·¤Æ¤¤¤Ê¤¤¤Ê¤é¤Ð¡¢
¤Þ¤º´Ö°ã¤¤¤Ê¤¯¤½¤¦¤Ç¤·¤ç¤¦¡£¥Ö¥é¥¦¥¶¤ò»È¤Ã¤Æ¥Æ¥¹¥È¤¹¤ëÁ°¤Ë
¤Þ¤º³Îǧ¤¹¤ë¤³¤È¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é¥×¥í¥°¥é¥à¤¬¼Â¹Ô¤Ç¤­¤ë¤³¤È¤Ç¤¹¡£
Î㤨¤Ð¡¢°Ê²¼¤ò¼Â¹Ô¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤:</p>
<div class="example"><p><code>
cd /usr/local/apache2/cgi-bin<br />
./first.pl
</code></p></div>
<p>(<code>perl</code> ¥¤¥ó¥¿¥×¥ê¥¿¤Ï¸Æ¤Ð¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£
¥·¥§¥ë¤È Apache ¤¬¥¹¥¯¥ê¥×¥È¤ÎºÇ½é¤Î¹Ô¤Î <a href="#pathinformation">¥Ñ¥¹¾ðÊó</a> ¤ò»È¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¡£)</p>
<p>ºÇ½é¤Ë¥×¥í¥°¥é¥à¤«¤é½ÐÎϤµ¤ì¤ë¤Î¤Ï <code>Content-Type</code> ¤ò´Þ¤ß¡¢
¸å¤Ë¶õ¹Ô¤Î³¤¯ HTTP ¥Ø¥Ã¥À¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Â¾¤Î¤â¤Î¤¬½ÐÎϤµ¤ì¤Æ¤¤¤ë
¾ì¹ç¤Ï¡¢Apache ¤Ï¤³¤Î¥×¥í¥°¥é¥à¤ò¥µ¡¼¥Ð·Ðͳ¤Ç¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¤È¤­¤Ë¤Ï
<code>Premature end of script headers</code> ¥¨¥é¡¼¤ò½ÐÎϤ·¤Þ¤¹¡£¾ÜºÙ¤Ï
¾åµ­¤Î <a href="#writing">CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯</a> ¤òÆɤó¤Ç¤¯¤À¤µ¤¤¡£</p>
<h3><a name="errorlogs" id="errorlogs">¥¨¥é¡¼¥í¥°</a></h3>
<p>¥¨¥é¡¼¥í¥°¤Ïͧã¤Ç¤¹¡£
Á´¤Æ¤Î¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤³¤È¤Ï¡¢¥¨¥é¡¼¥í¥°¤Ë¥á¥Ã¥»¡¼¥¸¤òÀ¸À®¤·¤Þ¤¹¡£
ɬ¤º¤½¤ì¤òºÇ½é¤Ë¸«¤ë¤Ù¤­¤Ç¤¹¡£
¤â¤·¡¢¤¢¤Ê¤¿¤¬¥¦¥§¥Ö¥µ¥¤¥È¤ò¼çºÅ¤·¤Æ¤¤¤ë¾ì½ê¤¬
¥¨¥é¡¼¥í¥°¤Î»²¾È¤òµö¤·¤Æ¤¤¤Ê¤¤¤Ê¤é¤Ð¡¢¤­¤Ã¤È¾¤Î¥µ¥¤¥È¤Ç¼çºÅ¤¹¤ë¤Ù¤­¤Ç¤¹¡£
¥¨¥é¡¼¥í¥°¤ÎÆɤßÊý¤ò³Ø¤Ö¤³¤È¤Ç¡¢¤Û¤È¤ó¤ÉÁ´¤Æ¤ÎÌäÂ꤬¿×®¤Ë³Îǧ¤µ¤ì¡¢
¿×®¤Ë²ò·è¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ë¤Ç¤·¤ç¤¦¡£</p>
<h3><a name="suexec" id="suexec">Suexec</a></h3>
<p><a href="../suexec.html">suexec</a> ¥µ¥Ý¡¼¥È¥×¥í¥°¥é¥à¤Ï
¥Ð¡¼¥Á¥ã¥ë¥Û¥¹¥È¤ä¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Î¾ì½ê¤Ë°Í¤Ã¤Æ
CGI ¥×¥í¥°¥é¥à¤ò°ã¤¦¥æ¡¼¥¶¸¢¸Â¤Î²¼¤ÇÁö¤é¤»¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£
Suexec ¤Î¸¢¸Â¤Î¥Á¥§¥Ã¥¯¤ÏÈó¾ï¤Ë¸·¤·¤¯¡¢¤½¤ì¤òËþ¤¿¤µ¤Ê¤¤¾ì¹ç¤Ï
CGI ¥×¥í¥°¥é¥à¤¬ <code>Premature end of script headers</code> ¥¨¥é¡¼¤Ç
¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£</p>
<p>suexec ¤ò»È¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤¿¤á¤Ë¤Ï <code>apachectl
-V</code> ¤ò¼Â¹Ô¤·¤Æ¡¢<code>SUEXEC_BIN</code> ¤Î¾ì½ê¤òÄ´¤Ù¤Æ¤¯¤À¤µ¤¤¡£
Apache ¤¬¤½¤³¤Ë suexec ¤Î¥Ð¥¤¥Ê¥ê¤òȯ¸«¤·¤¿¾ì¹ç¤Ï¡¢suexec ¤¬
»ÈÍѤµ¤ì¤Þ¤¹¡£</p>
<p>suexec ¤ò´°Á´¤ËÍý²ò¤·¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢»È¤¦¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
suexec ¤ò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢<code>SUEXEC_BIN</code> ¤«¤é»Ø¤µ¤ì¤Æ¤¤¤ë
<code>suexec</code> ¥Ð¥¤¥Ê¥ê¤òºï½ü (¤«Ì¾Á°¤òÊѹ¹) ¤¹¤ë¤À¤±¤Ç¤¹¡£
<a href="../suexec.html">suexec</a> ¤òÆɤó¤À¸å¤Ç¡¢¤Þ¤À¤½¤ì¤ò
»È¤¤¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢<code>suexec -V</code> ¤ò¼Â¹Ô¤·¤Æ suexec ¤Î
¥í¥°¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤òÄ´¤Ù¡¢¤½¤Î¥í¥°¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¥Ý¥ê¥·¡¼°ãÈ¿¤ò
¸«¤Ä¤±¤Æ¤¯¤À¤µ¤¤¡£</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="behindscenes" id="behindscenes">΢¤Ç²¿¤¬µ¯¤³¤Ã¤Æ¤¤¤ë¤Î¤«?</a></h2>
<p>CGI ¥×¥í¥°¥é¥ß¥ó¥°¤Ë½¬½Ï¤¹¤ë¤È¡¢
΢¤Çµ¯¤³¤Ã¤Æ¤¤¤ë¤³¤È¤Ë¤Ä¤¤¤Æ¹¹¤ËÍý²ò¤¹¤ë¤³¤ÈÌò¤ËΩ¤Á¤Þ¤¹¡£
¥Ö¥é¥¦¥¶¤È¥µ¡¼¥Ð¤¬¤É¤Î¤è¤¦¤ËÁê¸ßÄÌ¿®¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¤ÏÆäˤ½¤¦¤Ç¤¹¡£
¤Ê¤¼¤Ê¤é¡¢"Hello, World."
¤ò°õ»ú¤¹¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤Ï¤ª¤ª¤¤¤Ë·ë¹½¤Ç¤¹¤¬¡¢
¤½¤ì¤ÏÆäËÍ­±×¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£</p>
<h3><a name="env" id="env">´Ä¶­ÊÑ¿ô</a></h3>
<p>´Ä¶­ÊÑ¿ô¤Ï¡¢
¤¢¤Ê¤¿¤¬¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¦¤È¤­¤ËÊÕ¤ê¤Ë¸ºß¤·¤Æ¤¤¤ëÃͤǤ¹¡£
¤½¤ì¤é¤Ï¡¢¥Ñ¥¹
(¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤¿¤È¤­¤Ë¼Â¹Ô¤¹¤ë¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤òõ¤·½Ð¤¹¤È¤³¤í)¡¢
¥æ¡¼¥¶Ì¾¡¢Ã¼Ëö·¿¤Ê¤É¤Î¤è¤¦¤ÊÊØÍø¤Ê¤â¤Î¤Ç¤¹¡£
Ä̾ÉáÃÊ»ÈÍѤ·¤Æ¤¤¤ë´Ä¶­ÊÑ¿ô¤Î´°Á´¤Ê¥ê¥¹¥È¤òÄ´¤Ù¤ë¤Ë¤Ï¡¢
¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤Ç <code>env</code> ¤òÆþÎϤ·¤Þ¤¹¡£</p>
<p>CGI ¤Î½èÍýÃæ¡¢¥µ¡¼¥Ð¤È¥Ö¥é¥¦¥¶¤â´Ä¶­ÊÑ¿ô¤òÀßÄꤷ¡¢
¤½¤ì¤Ë¤è¤êÁê¸ß¤ËÄÌ¿®¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤Î´Ä¶­ÊÑ¿ô¤Ï¡¢¥Ö¥é¥¦¥¶¥¿¥¤¥× (Netscape, IE, Lynx)¡¢¥µ¡¼¥Ð¥¿¥¤¥×
(Apache, IIS, WebSite)¡¢¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë CGI
¥×¥í¥°¥é¥à¤Î̾Á°¤Ê¤É¤Ç¤¹¡£</p>
<p>¤³¤ì¤é¤ÎÊÑ¿ô¤Ï CGI ¥×¥í¥°¥é¥Þ¤¬»ÈÍѤǤ­¤Þ¤¹¡£
¤½¤·¤Æ¡¢¤½¤ì¤Ï¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¤ÎÄÌ¿®¤ÎÏäÎȾʬ¤Ç¤¹¡£
ɬÍפÊÊÑ¿ô¤Î´°Á´¤Ê¥ê¥¹¥È¤Ï <a href="http://hoohoo.ncsa.uiuc.edu/cgi/env.html">http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a> ¤Ë¤¢¤ê¤Þ¤¹¡£</p>
<p>°Ê²¼¤Îñ½ã¤Ê Perl CGI
¥×¥í¥°¥é¥à¤Ï¡¢ÅϤµ¤ì¤ëÁ´¤Æ¤Î´Ä¶­ÊÑ¿ô¤òɽ¼¨¤·¤Þ¤¹¡£Æ±ÍÍ¤Î¥×¥í¥°¥é¥à¤Ï¡¢
Apache ¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤Î <code>cgi-bin</code>
¥Ç¥£¥ì¥¯¥È¥ê¤ËÆó¤Ä´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
¤¤¤¯¤Ä¤«¤ÎÊÑ¿ô¤¬É¬¿Ü¤Ç¤¢¤ê¡¢¤¤¤¯¤Ä¤«¤ÏǤ°Õ¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
¤½¤·¤Æ¡¢¸ø¼°¤Î¥ê¥¹¥È¤Ë¤Ï¤Ê¤¤¤¤¤¯¤Ä¤«¤ÎÊÑ¿ô¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¤µ¤é¤Ë¡¢Apache ¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë´ðËÜŪ¤Ê¤â¤Î¤Ë
<a href="../env.html">¤¢¤Ê¤¿¼«¿È¤Î´Ä¶­ÊÑ¿ô¤ò²Ã¤¨¤ë</a>¤¿¤á¤Î¡¢
¿¤¯¤Î°Û¤Ê¤ëÊýË¡¤òÍÑ°Õ¤·¤Æ¤·¤Þ¤¹¡£</p>
<div class="example"><p><code>
#!/usr/bin/perl<br />
print "Content-type: text/html\n\n";<br />
foreach $key (keys %ENV) {<br />
<span class="indent">
print "$key --&gt; $ENV{$key}&lt;br&gt;";<br />
</span>
}
</code></p></div>
<h3><a name="stdin" id="stdin">STDIN ¤È STDOUT</a></h3>
<p>¥µ¡¼¥Ð¤È¥¯¥é¥¤¥¢¥ó¥È´Ö¤Î¤â¤¦°ì¤Ä¤ÎÄÌ¿®¤Ï¡¢É¸½àÆþÎÏ
(<code>STDIN</code>)¤Èɸ½à½ÐÎÏ (<code>STDOUT</code>)
¤òÄ̤¸¤Æ¹Ô¤Ê¤ï¤ì¤Þ¤¹¡£Ä̾ï¤Îʸ̮¤Ë¤ª¤¤¤Æ¡¢<code>STDIN</code>
¤Ï¥­¡¼¥Ü¡¼¥É¤ä¥×¥í¥°¥é¥à¤¬Æ°ºî¤¹¤ë¤¿¤á¤ËÍ¿¤¨¤é¤ì¤ë¥Õ¥¡¥¤¥ë¤ò°ÕÌ£¤·¡¢
<code>STDOUT</code> ¤ÏÄ̾拾¥ó¥½¡¼¥ë¤Þ¤¿¤Ï¥¹¥¯¥ê¡¼¥ó¤ò°ÕÌ£¤·¤Þ¤¹¡£</p>
<p>¥¦¥§¥Ö¥Õ¥©¡¼¥à¤«¤é CGI ¥×¥í¥°¥é¥à¤Ø<code>POST</code>
¤·¤¿¤È¤­¡¢¥Õ¥©¡¼¥à¤Î¥Ç¡¼¥¿¤ÏÆÃÊ̤ʥե©¡¼¥Þ¥Ã¥È¤Ç«¤Í¤é¤ì¡¢
<code>STDIN</code> ¤òÄ̤·¤Æ¡¢CGI ¥×¥í¥°¥é¥à¤Ë°ú¤­ÅϤµ¤ì¤Þ¤¹¡£
¥×¥í¥°¥é¥à¤Ï¥Ç¡¼¥¿¤¬¥­¡¼¥Ü¡¼¥É
¤â¤·¤¯¤Ï¥Õ¥¡¥¤¥ë¤«¤éÍè¤Æ¤¤¤¿¤«¤Î¤è¤¦¤Ë½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
<p>¡ÖÆÃÊ̤ʥե©¡¼¥Þ¥Ã¥È¡×¤Ï¤È¤Æ¤âñ½ã¤Ç¤¹¡£¥Õ¥£¡¼¥ë¥É̾¤ÈÃͤϥ¤¥³¡¼¥ë
(=) ¤Ç·ë¤Ð¤ì¤Þ¤¹¡£¤½¤·¤ÆÃͤÎÁȤϥ¢¥ó¥Ñ¥µ¥ó¥É (&amp;) ¤Ç·ë¤Ð¤ì¤Þ¤¹¡£
¥¹¥Ú¡¼¥¹¡¢¥¢¥ó¥Ñ¥µ¥ó¥É¡¢¥¤¥³¡¼¥ë¤Î¤è¤¦¤ÊÌÌÅݤÊʸ»ú¤Ï¡¢
¤½¤ì¤é¤¬Æ°ºî¤òÂÌÌܤˤ·¤Ê¤¤¤è¤¦¤Ë¤½¤Îʸ»ú¤ËÁêÅö¤¹¤ë 16 ¿Ê¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£
Á´¥Ç¡¼¥¿Ê¸»úÎó¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹:
</p>
<div class="example"><p><code>
name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey
</code></p></div>
<p>»þ¡¹¡¢¤³¤Î¤è¤¦¤Êʸ»úÎó¤¬ URL
¤ËÉղ䵤ì¤ë¤Î¤ò¸«¤ë¤Ç¤·¤ç¤¦¡£¤½¤Î¾ì¹ç¡¢¥µ¡¼¥Ð¤Ï
<code>QUERY_STRING</code> ¤È¤¤¤¦´Ä¶­ÊÑ¿ô¤Ë¤½¤Îʸ»úÎó¤òÆþ¤ì¤Þ¤¹¡£¤½¤ì¤Ï
<code>GET</code> ¥ê¥¯¥¨¥¹¥È¤È¸Æ¤Ð¤ì¤Þ¤¹¡£
HTML ¥Õ¥©¡¼¥à¤Ç¤Ï¡¢¥Ç¡¼¥¿¤òÅϤ¹¤¿¤á¤Ë <code>GET</code> ¤È
<code>POST</code> ¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò¡¢<code>FORM</code> ¥¿¥°¤Î
<code>METHOD</code> °À­¤ÎÀßÄê¤Ç»ØÄꤷ¤Þ¤¹¡£</p>
<p>CGI ¥×¥í¥°¥é¥à¤Ï¡¢¤½¤Îʸ»úÎó¤òÌò¤ËΩ¤Ä¾ðÊó¤Ëʬ³ä¤¹¤ëÀÕǤ¤¬¤¢¤ê¤Þ¤¹¡£
¹¬¤¤¤Ë¤â¡¢¤½¤Î¥Ç¡¼¥¿½èÍý¤ò½õ¤±¤ë¥é¥¤¥Ö¥é¥ê¤ä¥â¥¸¥å¡¼¥ë¤¬Â¸ºß¤·¤Þ¤¹¡£
¤³¤ì¤é¤Ï¡¢CGI ¥×¥í¥°¥é¥à¤Î¾¤ÎÌ̤ǤâƱÍͤËÌò¤ËΩ¤Á¤Þ¤¹¡£</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="libraries" id="libraries">CGI ¥â¥¸¥å¡¼¥ë/¥é¥¤¥Ö¥é¥ê</a></h2>
<p>CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¯¤È¤­¡¢ÌÌÅݤʻŻö¤ÎÂçÉôʬ¤ò¤·¤Æ¤¯¤ì¤ë
¥³¡¼¥É¥é¥¤¥Ö¥é¥ê¤Þ¤¿¤Ï¥â¥¸¥å¡¼¥ë¤ò»È¤¦¤³¤È¤ò¸¡Æ¤¤¹¤Ù¤­¤Ç¤¹¡£
¤³¤ì¤Ï¥¨¥é¡¼¤ò¸º¤é¤·¡¢Áᤤ³«È¯¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤¹¡£</p>
<p>Perl ¤Ç CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤ë¤Ê¤é¡¢¥â¥¸¥å¡¼¥ë¤Ï <a href="http://www.cpan.org/">CPAN</a> ¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ÎÌÜŪ¤Î¤¿¤á¤ÎºÇ¤âÉáµÚ¤·¤Æ¤¤¤ë¥â¥¸¥å¡¼¥ë¤Ï <code>CGI.pm</code> ¤Ç¤¹¡£
<code>CGI::Lite</code> ¤â¸¡Æ¤¤·¤Þ¤·¤ç¤¦¡£¤³¤ì¤Ï¡¢¤Û¤È¤ó¤É¤Î¥×¥í¥°¥é¥à
¤Ë¤ª¤¤¤ÆɬÍפȤ¹¤ë¤¹¤Ù¤Æ¤Îµ¡Ç½¤ÎºÇ¾®¥»¥Ã¥È¤Î¼ÂÁõ¤Ç¤¹¡£</p>
<p>C ¤Ç CGI ¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤ë¤Ê¤é¡¢¤¤¤í¤¤¤í¤Ê
¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤ÎÆâ¤Î°ì¤Ä¤Ï <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>
¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë <code>CGIC</code> ¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="moreinfo" id="moreinfo">¹¹¤Ê¤ë¾ðÊó</a></h2>
<p>CGI ¤Ë´Ø¤¹¤ë¾ðÊó¤Ï¥¦¥§¥Ö¤Ç¿ô¿¤¯Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£CGI
¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¤Ï Usenet ¤Î <a href="news:comp.infosystems.www.authoring.cgi">comp.infosystems.www.authoring.cgi</a> ¤Ç¡¢
¾¤Î¥æ¡¼¥¶¤ÈÏÀµÄ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£HTML Writers Guide ¤Î
-servers ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¡¢¤¢¤Ê¤¿¤Î¼ÁÌä¤Ë²óÅú¤·¤Æ¤¯¤ì¤ë°ÎÂç¤Ê¥ê¥½¡¼¥¹¤Ç¤¹¡£
<a href="http://www.hwg.org/lists/hwg-servers/">http://www.hwg.org/lists/hwg-servers/</a>
¤Ç¹¹¤Ë¿¤¯¤òõ¤·½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
<p>¤½¤·¤Æ¤â¤Á¤í¤ó¡¢¤ª¤½¤é¤¯ CGI
¥×¥í¥°¥é¥à¤ÎÆ°ºî¤Ë´Ø¤¹¤ë¾ÜºÙ¤ÎÁ´¤Æ¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤ë
CGI ¤Î»ÅÍͤòÆɤà¤Ù¤­¤Ç¤¹¡£¥ª¥ê¥¸¥Ê¥ë¥Ð¡¼¥¸¥ç¥ó¤ò
<a href="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA</a>
¤Ç¡¢¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿¥É¥é¥Õ¥È¤ò
<a href="http://web.golux.com/coar/cgi/">Common Gateway Interface RFC
¥×¥í¥¸¥§¥¯¥È</a>¤Ç»²¾È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
<p>CGI ¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¡¢²Ã¤ï¤Ã¤Æ¤¤¤ë¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Þ¤¿¤Ï¥Ë¥å¡¼¥¹
¥°¥ë¡¼¥×¤Ë¼ÁÌä¤òÁ÷¤ë¤È¤­¡¢µ¯¤³¤Ã¤¿¤â¤Î¡¢µ¯¤³¤Ã¤Æ¤Û¤·¤¤¤³¤È¡¢
¼ÂºÝ¤Ëµ¯¤³¤Ã¤¿¤³¤È¤¬¤É¤¦°ã¤¦¤«¡¢»ÈÍѤ·¤Æ¤¤¤ë¥µ¡¼¥Ð¡¢
CGI ¥×¥í¥°¥é¥à¤òµ­½Ò¤·¤Æ¤¤¤ë¸À¸ì¤Ë´Ø¤¹¤ë½½Ê¬¤Ê¾ðÊó¤È¡¢
²Äǽ¤Ç¤¢¤ì¤ÐÌäÂê¤Î¥³¡¼¥É¤òÄ󶡤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢ÌäÂ꤬¤è¤ê´Öñ¤Ë¸«¤Ä¤«¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£</p>
<p>Apache ¤Î¥½¡¼¥¹¥³¡¼¥É¤Ë¤ª¤¤¤ÆÌäÂê¤òȯ¸«¤·¤¿¤³¤È¤ò³Î¿®¤·¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢
CGI ¤ÎÌäÂê¤Ë´Ø¤¹¤ë¼ÁÌä¤ò Apache
¥Ð¥°¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë<strong>Á÷¤ë¤Ù¤­¤Ç¤Ê¤¤</strong>
¤³¤È¤ËÃíÌܤ·¤Æ¤¯¤À¤µ¤¤¡£</p>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/howto/cgi.html" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 1999-2004 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">¥â¥¸¥å¡¼¥ë</a> | <a href="../mod/directives.html">¥Ç¥£¥ì¥¯¥Æ¥£¥Ö</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">ÍѸì</a> | <a href="../sitemap.html">¥µ¥¤¥È¥Þ¥Ã¥×</a></p></div>
</body></html>