プロが教える店舗&オフィスのセキュリティ対策術

ApacheとPerlをインストールしてローカルでの動作確認OKなのですが、HP上では機能しません。
プロバイダー側が作った「アクセス権が認められてません
・・・どうたら、こうたら」のメッセージがでます。
すべてのファイル(cgi,html,pl・・)をEUC(文字)CR+LF
(改行)にして、アスキーモードでアップロードしました。
Perlパスやパーミッションは間違いないとは思うのですが
、アクセスすると凄い文字化けになっています。掲示板は機能しません。FTPはFFFTPですので自動改行すると思うの
ですが、コードの設定に関係があるのでしょうか?
私はWin98,プロバイダーはUNIX系です。それから、Apache
とPerlを使ってエラーを調べられるようなことを聞いたの
ですが、どのようにするのでしょうか?お願いします。

A 回答 (7件)

ローカルで動作しているという事なのでスクリプトが間違ってい


ないという前提とします。

パーミッションに付いてはセキュリティー上の問題から705じゃ
ないと動作しない設定にしているサーバーがあります。

cgiをおいても良いパスがセキュリティーの都合上指定されたパ
スでないといけない場合があります。

cgiが任意のパスにおける場合、.htaccessを点検して下さい。

FFFTPのバージョンによるのかもしれませんが、FFFTPでファイ
ルをアップロードする時にFFFTPで文字コードを変換すると化
け化けになる事があるので、ローカルでEUC-jpにしておいて、
コード無変換であげるようにして見て下さい。(改行コードの
変換機能は悪さをしないみたいなので気にしなくて良いようで
す。)


チェックポイントはこんな所だと思うのですが、

> 「アクセス権が認められてません・・・どうたら、こうたら」

という事は、少なくともスクリプトが実行されていないという
ことですよね?そうなるとパスか、パーミッションか、.htaccess
あたりではないかと思われます。

この回答への補足

marimo_cx さんの言うように無変換でアップロードしたら文字化けは直りました。エラーメッセージは「403, Forbidden ・・・」。755はOK。htaccessはいらないプロバイダー(interQ)です。パーミッションが違うのかなあ?ちなみに
borad.ini-644
jcode.pl-644
cgi_lite.pm-644
これらが入ってるフォルダ-777
にしました。これ間違ってます?

補足日時:2001/01/07 00:44
    • good
    • 0

サーバが UNIX ということは


改行コードは LF です。
#Windows は CR+LF、Mac は CR です。

改行コードに不要な CR がついてしまっているために
正常に動作していないのではないでしょうか?
    • good
    • 0

相変わらず“403, Forbidden”なんですね。


# InterQ使った事無いので以下一般論です。

サーバーによっては .pl と .cgi の拡張子が両方とも使えたり、
“どっちか”しか使えない様になっていたりしますが、逆さとい
う事はないですよね?(一応念のため)

ところで、.cgiをおいてある階層にHTMLファイルを置いてみて、
それって見えますか?すみません、まだ原因考え中なのでとりあ
えずそれがどうなるのか教えて下さい。

# とにかく実行してないって事ですからねぇ。

最初の質問の中にご自分が書いていらっしゃいますが、FFFTPは
デフォルトのままだとUPLOAD時にFL、DOWNLOAD時にはCR+LFにコ
ード変換を自動でしてくれるので気にしなくて平気です。

この回答への補足

相変わらず悩んでます。これってパスミスに関係ありますか?
オリジナルドメインはhttp://www.×××.com/です。オリジナルドメインでのCGIの呼び出しは出来ないようになっているらしくて、http://cgi.members.interq.or.jp/×××/user-cgi-bin/○○○.cgi で呼び出すそうです。HPにアクセスするときはhttp://www.×××.com/から入っていきます。cgi スクリプトにはURLは打ち込んでません。初期設定で $myname=$EN{SCRIPT_NAME};となってます。ここを書き換えないといけないのでしょうか?もしそれだとすれば、HPのURLはオリジナルドメインのままでもよいのでしょうか?よろしくお願いします。ちなみに同じ階層のHTMLファイルは表示します。

補足日時:2001/01/08 01:26
    • good
    • 0

> $myname=$EN{SCRIPT_NAME};



これは何でしょう?環境変数なら

$myname=$ENV{'SCRIPT_NAME'};

というように収得するはずです、あぱっちなら。
あと、今回は機能しないのではなく実行しないのですから
恐らく関係ないと思われます。

http://cgi.members.interq.or.jp/×××/user-cgi-bin/○○○.cgi

結局これでアクセスしてもエラーは今までと同じというこ
となのでしょうか?

この回答への補足

度々恐れ入っております。http://cgi.members.interq.or.jp/×××/user-cgi-bin/○○○.cgi
ではアクセスは出来ませんでした。interQはexecタグが使えないのですが<AHREF="board.cgi?exec=postform">投稿</A>これって、そのものズバリですか?だとすればこのスプリクトはつかえないってことですよね。どうしようかなあ(T_T)

補足日時:2001/01/09 02:21
    • good
    • 0

> <AHREF="board.cgi?exec=postform">投稿</A>



パスが合っているとして、これはSSIではなくcgiへのリンクですからexec
禁止には該当しないはずです。

ところで、
<!-- test.cgi -->
#!/usr/local/bin/perl < そういえばここは環境依存ですが、合ってますか?

print "Content-Type: text/html\n\n:;
print "<HTML><HEAD><TITLE>test page!</TITLE></HEAD>";
print "<BODY><H1>TEST</H1></BODY></HTML>\n";
<!-- end of test.cgi -->

みたいな、絶対動くcgiスクリプトでテストしてみるとどうなりますか?
的確な該当が出来なくてすみません。

この回答への補足

marimo_cx さん本当に度々すみません。現状報告します。テストCGIはちゃんと表示します 。(http://cgi.・・・・・から入って)、上の階層でも下の階層でもどこに置いても。それからexecですが、cgiスクリプトの中には#execは見当たりません。if ($cgi{exec} eq "postform")のようなものばかりです。このスクリプトはdbmのサポートがいるのですが、Perlのパスは確認したところ#!/usr/local/bin/perlと同じでいいとのことです。先回質問しました$myname = $ENV{SCRIPT_NAME}; ( #このファイルの URL)スクリプトの始めのほうに書いてある環境変数ですよね、ここを $myname = http://cgi.・・・・・と書き換えるとおかしくなるでしょうか?

補足日時:2001/01/10 01:28
    • good
    • 0

> 先回質問しました$myname = $ENV{SCRIPT_NAME}; ( #このファイルの URL)



今更の質問なんですが^^;、このスクリプトは自作ですか?
$myname は何の目的で使っている変数でしょう?

> スクリプトの始めのほうに書いてある環境変数ですよね、ここを 
> $myname = http://cgi.・・・・・と書き換えるとおかしくなるでしょうか?

このように書き換えている理由は何でしょう?

<!-- env_test.cgi -->
#!/usr/local/bin/perl

print "Content-Type: text/html\n\n:;
print "<HTML><HEAD><TITLE>test page!</TITLE></HEAD>\n";
print "<BODY>\n";

foreach (keys %ENV) {
print "$_ : $ENV{$_}<BR>\n";
}

print "</BODY>\n</HTML>\n";
<!-- env_end of test.cgi -->

これを実行してみて下さい、%ENVの意味が解ると思います。

> このスクリプトはdbmのサポートがいるのですが、

ん~、何をするcgiなんでしょう?
*.dirと*.pagをローカルで作ってアップロードしないとわけわかめになる事もありますが。
そこの所のパーミッションとファイル所有者は大丈夫な設計でしょうか?

でもエラーが500じゃなくて403なんですよねぇ?

この回答への補足

またまた、すみません。 $ENVはよくわかりました。CGIスクリプトは掲示板用で、「掲示板を作ろう」と言う手引書に付いていたものです。今度別の本の掲示板スクリプトで試しましたが、htmlファイルは表示するのですが、CGIファイルには移動できません。HPのURLなんですが、http://www.○○○.comがオリジナルドメインで取ったものですが、http://www.interq.co.jp/××/△△△でもアクセスできるのです。2つURLが有る形なのですが、これってパスミスのようなことが起きますでしょうか?FTPソフトのホスト設定はftp.members.interq.or.jpでしてあり、上のアドレスはつかってないです。CGIの呼び出しはhttp://cgi.members.interq.or.jp/××/△△△/test.cgiでしなくてはいけないそうで、一貫性がないのです。変じゃないですか?尚、別本のCGIもローカルでの動作は確認済みです。(T_T)

補足日時:2001/01/11 03:59
    • good
    • 0

> 一貫性がないのです。

変じゃないですか?

それぞれのセキュリティーポリシーですので、公称通りに稼動して
いるのであれば、とやかく言う事は出来ません。

> 尚、別本のCGIもローカルでの動作は確認済みです。(T_T)

そのスクリプトもInterQでは動かないのでしょうか?
それもdbm使っているのですか?
dbmpoen に関する行をすべてコメントアウトするとどうなりますか?

この回答への補足

marimo_cx さんすみませんです。これで最後にします。別本の掲示板スクリプトはdbmを用いていない単純なものです。(名前・メルアド・コメントのみ入力)これは404のエラー。問題のスクリプトのほうは今回500のエラー、dbmopenをコメントアウトして試しましたが、500のエラー。全然お手上げです。ローカルでは問題ないのに・・。文字と改行コードが途中で変わっちゃうのかなー?別のプロバイダーで試してみようかなー (T_T)

補足日時:2001/01/12 06:12
    • good
    • 0
この回答へのお礼

marimo_cx さん大変有難う御座いました。親切なアドバイス。初心者の私に付き合っていただき、貴重な時間つかわせてしまって、大変感謝しております。相変わらずお手上げなのですが、すこし熱をさまして、また頑張ります。なにかの折りには又よろしくお願いいたします。感謝感謝m(__)m ほんと感謝です。 m(__)m

お礼日時:2001/01/13 02:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!