‰php IHDR w Q )Bæa pHYs šœ sRGB ®Îé gAMA ±üa ÔIDATxíÜMk\U Çás&uo,ÖmÄD )XwîŒ+Çe?‰ºtw.“oàWpå§;—³°QHZnw¢`gaiJ’9Þˆ‰ÑÒÌŸç™û¾ýÍaî=·nlŽ[ ʨ G܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î ú¸·y H†¯@E7jÍ 1j+OF¥–€‹Rg}Ü«‘;@’E™Öa¹±ùáÓ~ ÿj`Ùuû'ož> ÙjÝ- $˜_§q?¾q¸S XzG'åóay
files >> /opt/lampp/manual/howto/ |
files >> //opt/lampp/manual/howto/cgi.html.ja.utf8 |
<?xml version="1.0" encoding="UTF-8"?> <!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> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>Apache Tutorial: CGI ã«ã‚ˆã‚‹å‹•的コンテンツ - Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.4</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 rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> <script src="../style/scripts/prettify.min.js" type="text/javascript"> </script> <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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p> <p class="apache">Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.4</p> <img alt="" src="../images/feather.gif" /></div> <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div> <div id="path"> <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーãƒ</a> > <a href="http://httpd.apache.org/docs/">ドã‚ュメンテーション</a> > <a href="../">ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.4</a> > <a href="./">How-To / ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«</a></div><div id="page-content"><div id="preamble"><h1>Apache Tutorial: CGI ã«ã‚ˆã‚‹å‹•的コンテンツ</h1> <div class="toplang"> <p><span>翻訳済ã¿è¨€èªž: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/howto/cgi.html" title="Japanese"> ja </a> | <a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> </div> <div class="outofdate">ã“ã®æ—¥æœ¬èªžè¨³ã¯ã™ã§ã«å¤ããªã£ã¦ã„ã‚‹ å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ 最近更新ã•れãŸå†…容を見るã«ã¯è‹±èªžç‰ˆã‚’ã”覧下ã•ã„。 </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><ul class="seealso"><li><a href="#comments_section">コメント</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> <div class="warning"> 注: Apache ãŒå…±æœ‰ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æ©Ÿèƒ½ç€ãã§ãƒ“ルドã•れã¦ã„ã‚‹å ´åˆã€ モジュールãŒãƒãƒ¼ãƒ‰ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 ã¤ã¾ã‚Š <code>httpd.conf</code> ã§ <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> ãŒã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã•れã¦ã„ãªã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 æ£å¸¸ã«è¨å®šã•れã¦ã„ã‚Œã°æ¬¡ã®ã‚ˆã†ã«ãªã‚‹ã¯ãšã§ã™: <div class="example"><p><code> LoadModule cgi_module modules/mod_cgi.so </code></p></div></div> <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://www.example.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> <Directory /usr/local/apache2/htdocs/somedir><br /> <span class="indent"> Options +ExecCGI<br /> </span> </Directory> </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 ファイル</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> <Directory /home/*/public_html><br /> <span class="indent"> Options +ExecCGI<br /> AddHandler cgi-script .cgi<br /> </span> </Directory> </code></p></div> <p>ユーザディレクトリ㮠<code>cgi-bin</code> サブディレクトリ㮠ã™ã¹ã¦ã®ãƒ•ァイルを CGI プãƒã‚°ãƒ©ãƒ ã¨ã—ã¦æŒ‡å®šã—ãŸã„å ´åˆã«ã¯ 以下ã®ã‚ˆã†ãªã‚‚ã®ã‚’使ã„ã¾ã™ã€‚</p> <div class="example"><p><code> <Directory /home/*/public_html/cgi-bin><br /> <span class="indent"> Options ExecCGI<br /> SetHandler cgi-script<br /> </span> </Directory> </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 プãƒã‚°ãƒ©ãƒ ã®ã™ã¹ã¦ã®å‡ºåŠ›ã«ã¯<a class="glossarylink" href="../glossary.html#mime-type" title="用語集をå‚ç…§">MIME タイプ</a> ヘッダを付ã‘ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 ã“れã¯ã©ã®ã‚ˆã†ãªç¨®é¡žã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’å—ã‘å–ã£ã¦ã„ã‚‹ã‹ã‚’クライアントã«ç¤ºã™ 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="#permissions">「ファイルã®ãƒ‘ーミッションã€</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> <p>ã¾ãŸã€CGI プãƒã‚°ãƒ©ãƒ ãŒä»–ã®<a href="#env">環境変数</a>ã«ä¾å˜ã—ã¦ã„ã‚‹å ´åˆã¯ã€ãã®ç’°å¢ƒå¤‰æ•°ãŒ Apache ã‹ã‚‰æ¸¡ã•れるよã†ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚</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 ãŒãã“ã« <code class="program"><a href="../programs/suexec.html">suexec</a></code> ã®ãƒã‚¤ãƒŠãƒªã‚’発見ã—ãŸå ´åˆã¯ã€suexec ㌠使用ã•れã¾ã™ã€‚</p> <p>suexec を完全ã«ç†è§£ã—ã¦ã„ãªã„é™ã‚Šã€ä½¿ã†ã¹ãã§ã¯ã‚りã¾ã›ã‚“。 suexec を無効ã«ã™ã‚‹ã«ã¯ã€<code>SUEXEC_BIN</code> ã‹ã‚‰æŒ‡ã•れã¦ã„ã‚‹ <code class="program"><a href="../programs/suexec.html">suexec</a></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 --> $ENV{$key}<br>";<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>「特別ãªãƒ•ォーマットã€ã¯ã¨ã¦ã‚‚å˜ç´”ã§ã™ã€‚フィールドåã¨å€¤ã¯ã‚¤ã‚³ãƒ¼ãƒ« (=) ã§çµã°ã‚Œã¾ã™ã€‚ãã—ã¦å€¤ã®çµ„ã¯ã‚¢ãƒ³ãƒ‘サンド (&) ã§çµã°ã‚Œã¾ã™ã€‚ スペースã€ã‚¢ãƒ³ãƒ‘サンドã€ã‚¤ã‚³ãƒ¼ãƒ«ã®ã‚ˆã†ãªé¢å€’ãªæ–‡å—ã¯ã€ ãれらãŒå‹•作を駄目ã«ã—ãªã„よã†ã«ãã®æ–‡å—ã«ç›¸å½“ã™ã‚‹ 16 進ã«å¤‰æ›ã•れã¾ã™ã€‚ 全データ文å—列ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™: </p> <div class="example"><p><code> name=Rich%20Bowen&city=Lexington&state=KY&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>翻訳済ã¿è¨€èªž: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/howto/cgi.html" title="Japanese"> ja </a> | <a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />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 <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> <script type="text/javascript"><!--//--><![CDATA[//><!-- var comments_shortname = 'httpd'; var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/cgi.html'; (function(w, d) { if (w.location.hostname.toLowerCase() == "httpd.apache.org") { d.write('<div id="comments_thread"><\/div>'); var s = d.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); } else { d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); } })(window, document); //--><!]]></script></div><div id="footer"> <p class="apache">Copyright 2015 The Apache Software Foundation.<br />ã“ã®æ–‡æ›¸ã¯ <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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } //--><!]]></script> </body></html>ß yôÊá½~ŒorÀ5ÖJ™={þÁEÇêe¾uç£Qk ®•ᯘG{÷?ù»ã+—]üôçƒÉÍ×ןô?wûM3X^¶ÚæŒ>{´7Ù¾ì´Kã>èo²ÎnÝ\ÿªÊj¿y· ðR£õãg/î=ÞÿfúOçÖr·o×NVÊv¿ú~ÿY+ ü¿NGêu÷ø·Ã®›þë¹HWŠûyëwÆ[eQ¶Ê¨¾SÚbÖ>öÍËÇ þ³>ä}Gçmx[o[<ÞÚ{ðýŸÏ®_ÅïqF–ÚÛvM IEND®B`‚