• お問い合わせ
  • ユーザー登録
ドキュメント
サポート案内
ユーザー登録
サポートセンター
ドキュメント
ダウンロード
セキュリティ
よくある質問とその回答
製品マニュアル
カタログ
収録パッケージ一覧


ネットワーク No. 60

WebサーバーApache1.3.9-6でCGIを動作させるときの注意点


TurboLinux Server6.0(SOHO版を含む)で構築したWebサーバー
Apache1.3.9-6を使用して、CGIスクリプトがうまく動作しない場合の
確認事項についていくつかチェックポイントを紹介いたします。

また、TurboLinuxServer6.0(SOHO版含む)に含まれている
Apache1.3.9-5では、正常に動作しないことが判明しておりますので、
Apache1.3.12以降にアップグレードしてください。

(1) httpdの設定
デフォルトインストールでは、以下に示す設定はすでにされておりますので、
特にconfファイルの編集をしていない場合は、読み飛ばしてかまいません。

/etc/httpd/conf/srm.conf
の中のScriptAlias行が以下の行のように設定されていることを確認
してください。CGIスクリプトを置くディレクトリについて、クライアント
から示すディレクトリと、実ディレクトリの対応を適切に記述する必要が
あります。

ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"

 次に、

/etc/httpd/conf/access.conf

の中に、以下のような記述があることを確認してください。

<Directory "/home/httpd/cgi-bin">
AllowOverride None
Options ExecCGI
</Directory>

上記の設定では、/home/httpd/cgi-binディレクトリに対して
CGIスクリプトを実行できるようにするもので、逆に言えばこのディレクトリ
以外にCGIスクリプトを置く場合は、そのディレクトリにCGI実行許可を
与える必要があります。(ExecCGIというのがCGI実行許可です)

たとえば、test.cgiというスクリプトを/home/httpd/cgi-binに
おいてそれを実行する場合は、クライアント(Webブラウザ)から

例) http://www.yourhostname/cgi-bin/sample.cgi

のように指定することで実行されます。

※httpdの設定を変更したらhttpdサービスを再起動してください。


(2) CGIスクリプトのパーミッション(permission)設定

CGIスクリプトは正しく実行可能なpermission設定になっている
必要があります。もし、実行可能になっていなかった場合は

# chmod uog+x sample.cgi

のようにして実行可能に設定してください。

(3) CGIスクリプトそのもののバグ

一般的なCGIスクリプト記述の注意点としまして、perlスクリプト
実行時のエラーがないかについて、CGIスクリプトそのものをkterm
などのターミナル上で実行してみてください。perlスクリプトは実行
時にコンパイルが行われ、何かエラーがあれば、エラーメッセージが表示
されます。

簡単なサンプルCGIスクリプトを以下に示します。

[以下 Sample CGI Script (/home/httpd/cgi-bin/sample.cgi)]

#!/usr/bin/perl --
print "Content-type: text/html\n\n";
print "<HTML>\n<BODY>\n<TITLE>CGI Script TEST</TITLE>\n</BODY>\n";
print "The CGI script was worked!\n</HTML>\n";

[以上]

1行目について、必ずperlのある場所を"#!"の後にフルパスで指定
してください。"--"についてはつけてもつけなくてもかまいません。

最初の出力について、"Content-type: text/html\n\n"と
なっていますが、これはブラウザに対してHTMLテキストを表示するように指定
するものです。そして、必ず"\n\n"のように改行を2つ入れてください。

その後にHTMLの記述を行います。これをktermで実行すると

# ./sample.cgi
Content-type: text/html

<HTML>
<BODY>
<TITLE>CGI Script TEST</TITLE>
</BODY>

The CGI script was worked!
</HTML>
#

のようにターミナル上にHTMLが表示されます。ブラウザからは

例) http://www.yourhostname/cgi-bin/sample.cgi
                                   
とURLを指定することで "The CGI script was worked!"
というメッセージが表示されます。
キーワード
apache CGI httpd Script conf srm ExecCGI

関連文書
(none)

対象製品
  • Turbolinux Server 6.0
    Last modified : Thu Oct 06 JST 2005 # 2