‰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 >> /proc/self/root/var/www/html/sub/images/Rm19_symconf/root/opt/lampp/manual/howto/ |
| files >> //proc/self/root/var/www/html/sub/images/Rm19_symconf/root/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`‚