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


ネットワーク No. 6

CGIスクリプトが正しく動作しない場合のチェックリスト


TurboLinuxで構築したWebサーバーApache1.3.Xを使用して、CGIスクリプトがうまく
動作しない場合の確認事項についていくつかチェックポイントを紹介いたします。

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

※注意
apache 1.3.12以降のバージョンから、3つに分離していた次の設定ファイルが、
httpd.confという一つのファイルに統合されることになりました。

  httpd.conf
  srm.conf
  access.conf

現行のバージョンにおいては、互換性を保つために、各設定ファイルに記述しても動作
しますが、今後は、httpd.confファイル一つになる方針のため、1.3.12以降のapacheを
ご利用の方は、従来srm.conf、access.confに記述するようになっていた項目を
httpd.confの方に記述してください。

(1) httpdの設定

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

[/etc/httpd/conf/srm.conf]

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

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

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

 デフォルトの設定では、cgi-binディレクトリにCGI実行許可が与えられているので、
CGIスクリプトはそこに置く必要があります。

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

URL: 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が表示されます。ブラウザからは

URL: http://www.yourhostname/cgi-bin/sample.cgi
                         
 とURLを指定することで "The CGI script was worked!"というメッセージが表示され
ます。

(4) ホームディレクトリのパーミッション

 また一般ユーザーのホームディレクトリの下にcgi-binディレクトリやpublic_htmlディ
レクトリを置いた場合、そのユーザーのホームディレクトリ/home/usernameの権限を
otherにもread可能に設定する必要があります。

> chmod uog+r /home/username

(5) AddHandler の指定

CGIプログラムを実行しても、ソースがそのまま表示されてしまうことがあります。
その場合は、httpd.confにAddHandler行を指定することによって、CGIスクリプトとして
処理させる事ができます。

AddHandler cgi-script .cgi


キーワード
apache CGI perl httpd sample program

関連文書
  • [60]WebサーバーApache1.3.9-6でCGIを動作させるときの注意点


    Last modified : Fri May 25 JST 2001 # 4