📄 cgi.html.ja.euc-jp
字号:
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 プログラムのすべての叫蜗には 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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -