ダウンロードしたフリーのPerlスクリプトを、
自分の設置したいサーバ環境などに合わせて設定を変更後
設置しました。

設置後、動作テストの為に、フォームにテスト記入して
送信ボタンを押したところ、ここで“送信完了”又は“エラー”等の
メッセージが出るはずなのですが、出ずに、
以下のように表示されたページが表れてしまいました。
--------------------------------------------
このページの表示が認められていません
このディレクトリを表示する権限がないか、
または提供されたアカウント情報を使用して
ページを表示する権限がない可能性があります。
--------------------------------------------
Perlのパスやパーミッションの設定はあっていると思うのですが・・・
何が原因か分かりません。

以前同じサーバに設置した掲示板はちゃんと機能しているので、
CGIは使えると思います。

原因が何か検討つく方がいらっしゃいましたら
ぜひ教えて頂けませんか!

※ちなみに、Perlについてはあまりよく分からず、
いつもフリーのスクリプトを利用している為、
あまり難しい回答は分からないかも知れませんが・・
すみません

このQ&Aに関連する最新のQ&A

A 回答 (1件)

恐らくフリーのとこだと思うんですが、


どこでしょうか?
ディレクトリを作成して、
その中にソースを置いて動かしていたら、
そのディレクトリのパーミッションが、
間違っているということだと思います。
ちなみに、CGIの場合
パーミッションは
読み取りのみではなく、実行もつける必要があります。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QPerlをcshスクリプトに書きなおしたい

以下のPerlで書かれたCGIをcshスクリプトに書き直したく思っています。

#!/usr/local/bin/perl
# load libraries
require ("/usr/local/bin/cgi-lib.pl");
# cancel stdout buffering
$| = 1;
# header response
print "Content-type: text/html\n\n";
print STDOUT "<HTML><HEAD></HEAD><BODY>\n";
&ReadParse;
open(COMM, "|./message > ./message.out") || die;
$in_text = $in{"Name"};
print COMM "Name: $in_text\n";
...

"Name"という変数名で受け取った文字列を$in_textに代入している
ようですが、この辺りの処理、cshではどう書けばよいのでしょうか。

Aベストアンサー

perl 用のライブラリである cgi-lib.pl を読み込んで、その中のReadParse を使っているので、その結果としてグローバル変数%in に設定されているのを取り出しているのが$in{"Name"} です。
もし、perl を使用できないので全面的にcsh のみで書きたい、というのであれば、cgi-lib.pl が現在の形では使用できなくなるので、cgi-lib.pl で行っている処理を他のプログラムやスクリプト等で代替した上で、csh にはハッシュはないですから、関数等で実装する必要があると思います。

QCGI perlでこんなスクリプトをご存知ないでしょうか?

一覧表があって、そこに仮に5個の名前があるとします。

ログインして自分のデータを変更や訂正。
更新されると、一覧表の順序内において、
一番先頭に表示される。

これって一番近いのは、やっぱり掲示板なんでしょうか?
もしこれに近い、無料配布されているサンプルを
ご存知でしたら、お教えいただけませんか?

Aベストアンサー

基本は名簿管理…なのでしょうか?

以下のものはどうでしょうか、更新順に表示も可能です。

■Miniりすと
http://www.minicgi.net/cgi2/list.html

参考URL:http://www.minicgi.net/cgi2/list.html

QApachでCGI(Perlスクリプト使用)を動かすときに先頭の#!に関係なく実行できるようにするには。

ApachでCGI(Perlスクリプト使用)を動かすときに先頭の#!のPerlを動かす場所(?)を指定する行が無かった場合や、違う場合でも、Apachが勝手にperlの場所を解釈しスクリプトを実行してくれるようになるhttpd.confの設定方法ってありますか?

Aベストアンサー

> CGI(Perl使用)の部分もあるので、ローカルで実際に動かしてからサーバにアップしています。
> ローカルでの実行環境がApach(for win32)+ActivePerlで、サーバにアップするときにわざわざ#!部分を変更しなければなりません。それが少々めんどくさいので
> 質問したわけであります。

発想の転換をしてみてください。
要するに「she-bang 書き換えが面倒くさい」だけなんですよね?

Apache に依存させるのではなく、ActivePerl を入れなおして、ディレクトリをあわせてみてはいかがでしょうか。
ActivePerl をインストールする際に、例えばサーバ側が
/usr/bin/perl
だった場合、
c:\usr
フォルダを作っておいて、インストール先を c:\usr にしておけば、perl インタプリタの実行ファイルが c:\usr\bin\perl.exe になります。
she-bang を #!c:\usr\bin\perl とすればいいのは勿論なんですが、Apache を介せば、UNIX 表記でも問題ないので、#!/usr/bin/perl と記述することが可能です。当然それなら、いちいち書き換えなくても、サーバ側でそのまま利用することが可能です。

コツとしては、perl のパスの bin ディレクトリの上位まで、Windows 上に作っておいて、インストール先として、そこまで指定します。

/usr/local/bin/perl としたい場合は、c:\usr\local フォルダを作っておいて、インストール先として c:\usr\local を指定すれば、自然と bin ディレクトリが作られ、その中に perl.exe がインストールされます。
で、CGI として使用したいファイルの先頭を
#!/usr/local/bin/perl とすれば、サーバでも Win 環境でも共用できる she-bang が書けますので、そういうことを気にしなくてもいいと思います。
私はかれこれ 3 年間、この方法を使ってます。

> CGI(Perl使用)の部分もあるので、ローカルで実際に動かしてからサーバにアップしています。
> ローカルでの実行環境がApach(for win32)+ActivePerlで、サーバにアップするときにわざわざ#!部分を変更しなければなりません。それが少々めんどくさいので
> 質問したわけであります。

発想の転換をしてみてください。
要するに「she-bang 書き換えが面倒くさい」だけなんですよね?

Apache に依存させるのではなく、ActivePerl を入れなおして、ディレクトリをあわせてみてはいかがでしょうか。
A...続きを読む

QperlのMIMEモジュールの代用ができるスクリプトは?

CGIでメール受信処理をするために、Net::POP3の使用はできましたが、MIME系のモジュールがサーバーに用意されていないらしく、受信したメールの解析がうまくいきません。
モジュールなので、サーバーのPERLに管理者が追加しないといけないと思うのですが、お願いしても断られてしまいました。
jcode.plやcgi-lib.plのように、requireで読み込むようなパターンにしようと思うのですが、代用できるようなスクリプトをご存知の方はいらっしゃらないでしょうか?
MIME-Base64
MIME-tools
MailTools
IO-stringy
の四点に変わるものを探しています。

よろしくお願いいたします。

Aベストアンサー

動作未確認ですが、これでできるかもしれません。

http://hp.vector.co.jp/authors/VA022047/program/mail.txt

ご参考までに。

参考URL:http://hp.vector.co.jp/authors/VA022047/program/mail.txt

Qループが可能なHTMLテンプレートを切り離せるperlスクリプト

はじめまして、いつもphpをつかっててperlの知識がない者です。
perlの中にHTML部分を記入するとコードが読みにくくなるので別ファイル(テンプレート)として切り離したいのです。
そのとき、たとえば掲示板のように、ループ部分があっても、そのテンプレートがつかえるようにしたいのですが、そのような、スクリプトをご存知の方いらっしゃいましたら、どうか教えてください。
よろしくお願いいたします。

Aベストアンサー

Antsさんこんばんは。掲示板ソフトではそういう目的のために定番になっている手法があります。
モジュールがなくても大丈夫です。おそらくモジュールも同じようなことをやっているはずです。
例えば次のようなファイルをtemplate.htmlという名前で保存します
****************************************************

<html>
<head>
<title><!--title--></title>
<meta http-equiv="Content-Type" content="text/html; charset=<!--charset-->">
<meta http-equiv="Pragma" content="no-cache">
</head>

<body bgcolor="#<!--bgcolor-->" text="#<!--textcolor-->">
<h1><font color="#<!--fontcolor-->"><!--owner-->さんの掲示板</b></font></h1>
<!--begin-->番目から<!--end-->番目までの記事を表示しています<br>

<!--message-->

<hr>
<form action="BBS.cgi">
<input type="hidden" name="Next" value="<!--nextpage-->">
<input type="submit" value="次のページへ">
</form>
</body>
</html>

******************************************************************

そしてスクリプトの中で$title,$charset,$bgcolor,$textcolor等の変数を用意しておき

*****************************************************************

open (IN,"template.html");
print "Content-type: text/html\n\n";
while(<IN>){
  s/<!--title-->/$title/;
  s/<!--charset-->/$charset/;
   ・
   ・
   ・
 s/<!--message-->/$message/;
   ・
   ・
   ・
 s/<!--nextpage-->/$nextpage/;
 print ;
}

*******************************************************************
と置き換えていけばお望み通りのことができます。
ただし$messageの部分は1行ではすまないのでこの部分はスクリプトであらかじめ作ってやる必要があります。
例えばログファイルLOG.txtが
投稿者名:投稿日:内容
という書式で記録してあるとすれば

******************************************************************

open (INC,"LOG.txt");
$message="";
while(<INC>){
 ($name,$day,$mes)=split(':',$_);
  $message = "$message" .
"<table>\n
<tr><td>$name</td><td>$day</td></tr>\n
<tr><td colspan="2">$mes</td><tr>\n
</table><br>\n";
}

*****************************************************************
などとやります。leaz024さんが紹介されているモジュールも上に書いたようなルーチンをパッケージ化したものだと思われます。
なお上のスクリプトはささっと書いたのでコマンドのつづり間違い等があるかも知れませんがご容赦下さい。

Antsさんこんばんは。掲示板ソフトではそういう目的のために定番になっている手法があります。
モジュールがなくても大丈夫です。おそらくモジュールも同じようなことをやっているはずです。
例えば次のようなファイルをtemplate.htmlという名前で保存します
****************************************************

<html>
<head>
<title><!--title--></title>
<meta http-equiv="Content-Type" content="text/html; charset=<!--charset-->">
<meta http-equiv="Pragma" content="no-cache">
</head>
...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報