新規記事投稿
フォロー記事投稿
記事のキャンセル
From: Yasu.F
<yasuf@ariake.or.jp>
Subject: Server Errorでお困りの方々へ…
Date: 1997/05/06 21:54:43
# 適当な場所が無いのでとりあえずここに投稿^^;
まず、不安を解消するためにひとつ言っておきますが、
「Server Error」とは別にあなたがサーバを壊してしまった
ときに出るエラーではありません:-)
CGIを扱っているときにこのエラーに遭遇した場合、殆どが
サーバに合っていない設定をしてしまった(「#!」行の記述が
違うなど)ためか、またはスクリプトのミス(文法エラーなど)
によるものです。
# もちろんサーバ自体が変なときにも出ますが
つまるところ、これはかなりいい加減な解釈しかできない
エラーですので^^;、原因は自分で探してみないと分かりません。
そこで、ある程度簡単にエラーの原因を探ってみる方法を
考えてみます。
まず、サーバのログが読める(恵まれた環境の)方は、迷わず
エラーログを参照してみましょう。これはサーバの設定にも
よりますが、/usr/local/etc/httpd/logsや、/var/logなどの
ディレクトリの下にあることが多いようです(管理者に聞いて
みると教えてくれるかも知れません)。ここからFTPで取って
くるなり(場合によっては非常に大きいですのでお薦めは
しませんが)、shellでログインして読んでみるなりすれば
いい訳です。
ただ、プロバイダ経由で接続している場合、こういったログが
読めることはあまり無いでしょうから、ここではちょっと別の
方法を考えてみたいと思います。名付けて「CGIのことはCGIで」
方式とでもいいましょうか:-)
さて、まずこのスクリプトをダウンロードしてください。
次に、適当なテキストエディタ(MacならSimpleText、
Windowsならメモ帳でいいでしょう)で、このファイルの
最後の行の「hoge.cgi」となっている部分を、あなたが
テストしたいCGIのファイル名(例えば「index.cgi」など)
に書き換えてください。このとき、
ファイル名の大文字小文字を間違えないこと(index.cgiとINDEX.cgiは違う)
余計な空白が入らないようにすること
に注意してください(このスクリプト自体がServer Errorを
起こしたら元も子もないですからね^^;)。
書き換え終わったら、このファイルをFTPなどでWWWサーバに
アップロードします。このとき、
テスト対象のCGIと同じディレクトリに
cgi-check.cgiなどというファイル名で
テキスト(ASCII)モードで
転送してください(最後の項目は特に重要です)。
それから、アップロードし終わったファイルが実行できる
ように、実行許可を与えておきます。具体的には、ファイルの
モードを755(rwxr-xr-x)などに設定すればいいでしょう。
それでは、いまアップロードしたCGIを、WWWブラウザなど
から参照してみてください。正常にCGIが動いていれば、
Content-Type: text/html
<html>
<head><title>ほげほげ</title></head>
:
:
などと表示されるはずです。でなければ、何かエラー
メッセージが表示されているでしょう。
# 環境によってメッセージは若干違います
exec: .../hoge.cgi: Permission denied
実行許可が下りていないだけです(ふつうServer Errorには
ならないでしょうが)。FTPなどでファイルのモードを755
などにしてみましょう。
exec: .../hoge.cgi: No such file or directory
exec: .../hoge.cgi: not found
メッセージだけで見ると「ファイルが無い」なんて言ってて
意味不明ですが、これはスクリプトの1行目の「#!/usr/local/bin/perl」
などの記述が間違っているという意味です(つまり
「/usr/local/bin/perlが無いよ」と言っている)。サーバの
管理者に正しい位置を聞いてみてください。
# もちろんhoge.cgi自体が無い場合にも出ます:-)
Execution of .../hoge.cgi aborted due to compilation errors.
Perlで文法エラーなどがあったときに出るメッセージです
(このメッセージの前に、どこがおかしいかも出ているはづ
です)。スクリプトの書き間違いは無いかとか、うぇぶ会議室
ならsite.plをチェックしてみましょう。
ほかにもいろいろ状況は考えられますが… あとはメッセージを
確認しながらTry&Errorでしょう^^; 数時間悩んだ末発見した
原因が単なるタイプミスだった、なんてことも良くある話ですが:-)
あと、よくあるミスとして、スクリプトをバイナリ(Image)
モードで転送していた、ということもありますので、FTPする
ときは十分注意してくださいね。
では、頑張ってください_(..)_ %ツッコミ大歓迎