はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/01/16
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 当サイト情報 >> スレッド

このページは表示専用です。新規投稿・レスや最新情報はこちらです。

 CGIが表示できない。。。
日時: 2006/06/13 20:06
名前: 板違いな初心者

?不明点・障害内容:CGIが表示できない
?ログの有無   :不明
  (有:その内容):
?Distribution  :Fedora Core 5
      Version:
?Service Name  :
      Version:
?ネットワーク構成:4台でLANを構成、PuTTYとWicSCPでサーバーにアクセス

Fedora Core 5 でWebサーバーの構築を始めて3週間になります。
こちらのサイトはいつも参考にさせていただいております。
QandAのスレッドはどれも難しい質問ばかりで、まだまだ初心者の私には理解を超えております。
出来ないこと、わからないことは山ほどありますが、必要なことからひとつひとつ解決していきたいと考えております。英知に富んだ皆様方に色々教えていただければ幸いです。

何はともあれWEBサーバーということで、何とかHPの公開まではこぎつけましたが、CGIの表示がどうしても出来ません。SSIのほうは問題なく出来たのですが。。。kajuhome.com様のApache.shtml
のページを参考に何度も設定を見直したりtest.cgiを実行して見たのですが表示できません。ドキュメントルートは変更しましたが、ログの記録内容変更は私には理解できませんでしたのでやっておりません。
http://サーバーアドレス/test.cgiとやると Forbidden/You dont't have permisson to access/test.cgi on this serverとなります。
パーミッションは 705以外にも755などで試してみたのですがどれもだめでした。

HPにはメールサーバーがつき物ですが、今のところールサーバーは失敗しております。
とりあえずCGIからです。管理人様、皆様よろしくお願いいたします。



■ コンテンツ関連情報

 Re: CGIが表示できない。。。 ( No.1 )
日時: 2006/06/13 21:09
名前: 管理者

test.cgiを設置したパスはどこですか?

「/etc/httpd/conf/httpd.conf」内の以下の場所は正しく設定されていますか?

実行したいパスのディレクティブ<Directory "/var/www/・・・・・">内のOptionsに「ExecCGI」は明記されていますか?
  ↓
Options ExecCGI

また、MIME(cgi)を実行する拡張子は以下の様になっていますか?
AddType application/x-httpd-cgi .cgi .pl
AddHandler cgi-script .cgi .pl
 Re: CGIが表示できない。。。 ( No.2 )
日時: 2006/06/13 22:43
名前: 板違いな初心者

早速のレスありがとうございます。
test.cgiを設置した場所はもちろん/var/www/html/test.cgiです
WinSCPで見てもその場所にあるので間違いありません

<Directory "/var/www/html">
 Options Includes ExecCGI FollowSymLinksとやって降りましたので間違いなく。。。

MIME ? は

AddHandler cgi-script .cgi としているところを

AddType application/x-httpd-cgi .cgi .pl
AddHandler cgi-script .cgi .pl
と変更をしてみました。
どこか訂正するところを間違ったのでしょうか?

そしてhttp://サーバーアドレス/test.cgiとやるとHTTP 500 - 内部サーバー エラー となってしまいました。
ますます悪化したような。。。(~o~) 



 Re: CGIが表示できない。。。 ( No.3 )
日時: 2006/06/13 23:01
名前: 管理者

ちなみに、Perlスクリプトの宣言部「#!/usr/local/bin/perl」と言う部分。

以下の実行結果と合っていますか?
# which perl


また、実行時のエラーのログは何と出ていますか?
ログファイルは「/var/log/httpd/error_log」です。
 Re: CGIが表示できない。。。 ( No.4 )
日時: 2006/06/13 23:52
名前: moja

実は同じような症状に悩まされました。CGIが動かなねぇ〜…

で、
<Directory /var/www/html>
   :
  AllowOverride None
   :
</Directory>

の AllowOverride を All にしたところ、動きました。
2.0.xの httpd.conf は、None で動いているのに、2.2.0 は動かない(?_?)
それ以外で原因と思えるところ、フシはあるものの、動いてしまったのでテストはしてません。
 Re: CGIが表示できない。。。 ( No.5 )
日時: 2006/06/14 07:11
名前: 板違いな初心者

管理者 様 ありがとうございます。 #which perl ではもちろん /usr/local/bin/perl です。
cgiの記述も#!/usr/local/bin/perlで一致しております。
またエラーログはHTTP 500 - 内部サーバー エラー と出たときの物です。
   ↓
192.168.0.2 - - [13/Jun/2006:22:41:15 +0900] "GET /test.cgi HTTP/1.1" 500 741 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 1.1.4322)"


moja 様 情報ありがとうございました

<Directory /var/www/html>
   :
  AllowOverride None
   :
</Directory>

の AllowOverride を All に変えて見ては?ということでしたが。。。これは既に Allになっていました。
私が意図的に替えたのか、デフォルトでそうだったのかは不明です。(~o~)
 Re: CGIが表示できない。。。 ( No.6 )
日時: 2006/06/14 07:29
名前: 管理者

それでは、以下のコマンド結果はどうなりますか?

# perl test.cgi

また、test.cgiの文字コードはサーバのロケールと合っていますか?

# kcc -c test.cgi
# locale
 Re: CGIが表示できない。。。 ( No.7 )
日時: 2006/06/14 11:32
名前: moja

あまり関係無いかもしれませんが、
私のところのCGI回り、
<IfModule mod_cgid.c>
  Scriptsock run/httpd.cgid
</IfModule>
を入れてます。
AllowOverride と、それ以外は、デフォルトのままです。

管理者さんの言うところのロケールに関して、
うちの場合、過去資産には手を入れずに動かしたいという意図があって
2.2.0で見えなくなったmod_encoding.so を再投入。結果、
# kcc -c test.cgi
test.cgi:    shift-JIS
問題無く動いてますよん。

何度もやってるとは思いますが、
パーミッション設定、再確認してみてはいかがでしょう?
 Re: CGIが表示できない。。。 ( No.8 )
日時: 2006/06/14 12:05
名前: moja

もうひとつ、Exec-Shield。
デフォルトだと11だったかな<FC5>それを、2に変更。
そんなぐらい<思い当たるフシ
 Re: CGIが表示できない。。。 ( No.9 )
日時: 2006/06/14 19:20
名前: 板違いな初心者

管理者 様 moja 様ありがとうございます。昼間は会社に行っているので手元にサーバーがなくて。。。遅くなってしまいました。私の頭では理解不能なことばかりのレスですが。。。

<Directory /var/www/html> で # perl test.cgi とやるとものすごい長い英文が出てきます(^_^;)
私はサーバー上のテキストをコピーしてここに貼り付けるすべを知らないので全文は掲載出来ませんが、
perl : warning :setting locale faild.
perl : warning :please check that your locale settings:
    Language =(unset),
    LC_ALL = (unset),
    LANG = "c"
 are supported and installed on your system
perl: warning : Failling back to the standard locale ("C"). 
とまだまだ延々と続きます

で(~o~)

私のperl記述がどこか違うのかと思い、管理者様のサイトから直接コピーペーストして作ってみた
test.cgi(ここでは便宜的に test.cgi2 ) として再度トライしてみました。

なんとあろうことか?ブラウザー上にCGIが表示できたのです!!!!!!
プリントアウトして2者をくまなくチェックして見比べてもまったく同じ記述なのに・・・釈然としません
このtest2.cgi で perl test2.cgiとやると やっぱり

perl : warning :setting locale faild.
perl : warning :please check that your locale settings:
    Language =(unset),
    LC_ALL = (unset),
    LANG = "c"
 are supported and installed on your system
perl: warning : Failling back to the standard locale ("C"). 
Content-type: text/html
と続いて
htmlのソースの記述が続きますがそこで終わりです。

***********

# kcc -c test.cgi ← これについては kcc:command not foud となり
# locale については
locale:Cannot set LC_CTYPE to default locale :NO such file or directory
locale:Cannot set LC_MESSAGES to default locale :NO such file or directory
locale:Cannot set LC_ALL to default locale :NO such file or directory
LANG=C
以下延々と続きます(^_^;)


たとえば自分がテスト用に作った

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello, Linux users!";

この記述で何故同じディレクトリで表示できないのか?



また、先の表示に成功したtest2.cgi
をユーザー名のディレクトリで何故表示できないのか? 不思議なことばかりです
ユーザ名は http://○○.jp/~ユーザー名/test2.cgi で
<Directory /home/*/public_html>
 Options Includes ExecCGI
</Directory> に変更しています。

(もちろん http://○○.jp/~ユーザー名/index.htmlとしては動作確認が取れております)


今夜これから成功した /var/www/htmlに CGIカウンターを設置してみようと思います。
この状態で動くのかどうか、自作サーバー3週間のキャリアでは判断できません。
.htaccessは?このままでいいのか? WinSCPの転送モードは?
レンタルーサーバーでは多くのCGIをアップしましたが未知の世界です。

勝手なことばかり書いてしまいましたが、アドバイスをいただければ幸いです。




 Re: CGIが表示できない。。。 ( No.10 )
日時: 2006/06/14 22:08
名前: 管理者

試験的に作成したスクリプトは、Windows側で作成して転送されましたか?

LANG="C"となっているので、usコード(正式名は不明)だと思います。
改行コードがLFではなく、CR+LFなどになっている場合、スクリプトが実行できなくなる場合があります。

試して欲しいのですが以下の手順を行ってみてください。

現在のシステムの状態で、スクリプトのヘッダ部を変更して確認してみて下さい。
?「test.cgi」をEUCコード(改行をLF)に変換して確認する。
  → 変換方法は、「http://kajuhome.com/tips/tips_00_007.shtml」を参照下さい

?「#!/usr/local/bin/perl」を「#!/usr/local/bin/perl --」にして確認する

システムのロケールをEUCにする。
?「http://kajuhome.com/inst_after.shtml#n03」を実施し、サーバを再起動する。
 この後、CGIが正しく表示されるか確認する。(この時のCGIは?のコード体系のスクリプトで実施してください。)
 Re: CGIが表示できない。。。 ( No.11 )
日時: 2006/06/14 23:41
名前: 板違いな初心者

管理者 様 すばやくも親切なレスありがとうございます。

<試験的に作成したスクリプトは、Windows側で作成して転送されましたか?
はい、test.cgiも自作cgi もコンソール上から作っているので改行コードのモンダイはないと思います。

http://kajuhome.com/tips/tips_00_007.shtml」とした場合 nkf: command not foud となったのでフリーソフトのCharset Coverterを使いtest.cgiを変換した後「#!/usr/local/bin/perl --」と変更
して test.cgiをブラウザー上から再度トライしましたがHTTP 500 - 内部サーバー エラー となってしまいました。

?「http://kajuhome.com/inst_after.shtml#n03」これについては以前文字化けで悩んだときに既に実行済みです。

そしてアクセスカウンターを設置した報告をさせてください。出来ましたヽ(^o^)丿
結局 /var/www/html 上でめでたくdaycounter.cgi のアクセスカウンターの動作確認が出来ました。(^^♪
しかし /~ユーザ名/daycounter.cgi で表示させようとすると表示できませんでした。


Linuxをはじめて3週間あまり、不思議なことがたくさんありました。今回のCGIもそうですが、sshの設定でも昨日はユーザー名でログイン出来たのに、今日はrootに設定を変えないとログインできないとか。。。そんな場面に何度か遭遇しました(私の操作ミスまたは記憶違いかも知れませんが)
管理者 様に色々ご教授いただきましたが、どうしても test.cgi が何故出来なかったのか特定できませんでした。 もし気を悪くされていないようでしたらユーザー名のディレクトリで何故カウンターが表示できないかお知恵を拝借いただければうれしいです。


■ その他

ページ先頭へ


Copyright(©)2004-2018 First home server construction. All Right Reserved.