自作で掲示板を作りました。
ApacheとPerlでローカルでの動作確認を行った後、プロバイダのサーバーにアップロードしました。
ところがhttp://xxx.hi-ho.ne.jp/~xxx/xxx.cgiにアクセスすると、ブラウザがアクロバットリーダーで書類を開こうとしてしまい、cgiプログラムが動きません。

cgi,plはEUC(文字)CR+LF(改行)で保存し、アスキーモードでアップロードしました。その他、プロバイダ-が指摘する注意事項(cgiプログラムの置き場所など)も全てチェックしたつもりです。

でもとても初歩的なミスを犯しているのかもしれないと思い、投稿しました。
よろしくお願いします。

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

A 回答 (2件)

No91の質問とは掲示板のことでしょうか?


お使いのプロバイダがHI-HOのようですが、SSIにて#execが使えないなどの制限事項があるようです。
SSIを用いて掲示板部分のCGIを読み出しているものをご利用ならば、エラーが出るかと思います。
私もそんなに詳しくはありませんので、参考までにですが。

参考URL:http://www.home.hi-ho.ne.jp/home/service/rental_ …
    • good
    • 0
この回答へのお礼

すいません。
CGIプログラムの冒頭の「Perlのパス」を間違えているだけでした。ああ恥ずかしい。
おかげで掲示板アップできました。

ありがとうございました。

お礼日時:2001/01/23 16:06

まさかと思いますが、アップロードのあとそれぞれのファイルにパーミッションを設定しましたか?

この回答への補足

再度すみません。
No.91の質問の補足をさせてください。

その後、ブラウザに「execv failed.(2)(/02/0255/masami-s/cgi-bin/keijiban.cgi)(/chome)」というメッセージが出ていることがわかりました。

これってkeijiban.cgiのプログラム自体になにか問題があるということなんでしょうか?

補足日時:2001/01/22 20:20
    • good
    • 0

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

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

QHi-hoで画像を・・・

こんばんわ。
Hi-hoで画像を使った掲示板などを設置する時に
画像がいれてあるディレクトリを掲示板ファイルに記しても
画像が表示されないんです。

どうしてでしょうか?
(フルパスでかいてます。最後を/で閉じてます)

Aベストアンサー

hi-ho で、というよりも、
その掲示板CGIの問題だと思うのですが、
他のサーバではまったく同じ設定で動作するのですか?

絶対パスではダメな場合もあるので、
相対パスと絶対パスの両方でチェックしてみてはどうでしょうか。

あと、ソースを見てどうなっているのかをチェックするのも手です。

QPerl/CGIプログラムとPHPプログラムはどちらがメジャー?

2000年くらいから自分のWEBページを作成して、Perlで書かれたCGIプログラムを設置していました。
また、2005年くらいからはnucleusなどのPHPで書かれたBlogを運営したりして、現在に至ります。
現在、WEBページ制作代行の仕事をしていますが、Perl/CGIプログラムとPHPプログラムでは、今はどちらがメジャーというか、旬なのでしょうか?
プログラムの内容によって使い分けるのが良いのかとも思いますが、現在はどちらの言語がメジャーであって、使い勝手などが良いのか、教えてください。
単語の用法など間違いがありましたらご了承下さい。
尚、Perl、PHP共に、一からプログラムを作成することはできませんが、作られたプログラムを改造する程度ならできるレベルです。

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

Aベストアンサー

正直なところ、どちらでも、、、といったところです。
あえて「旬」というならば、PHPなんでしょうね。きっと。
どちらも既に「旬」ではないと思いますが。。。

PHPの場合、CGIで立ち上がるワケではないので、動作はPerl/CGIと比べて軽快です。
ですので、動的なページ生成を考えるならば、PHPのほうが良いでしょう。

正直、PHPはプログラムの一部を改造する程度しかできませんのでなんとも言えませんが、Perlは文字列処理が強力なのは、Webにたくさん情報があるとおりで、私も実感しています。
その一方、グラフィック的な処理は、Perlは不向きです。

Perl5系はオブジェクト指向が、だいぶふわっとした感じで、オブジェクト指向を理解しきれていない私にはちょっと使いづらいです(オブジェクト指向をカチッと勉強するには向いていないと思います)。
Perl6系になったら、もっとしっかりしたオブジェクト指向になるそうですが、、、


で、私自身は、最近はCGIでサーバ上のデータを整形してjavascript(Ajax)に渡すという流れがお気に入りです。
または、javascriptでデータを取得して、CGIに渡して、サーバ上に蓄積する、といったカンジですね。
javascriptはブラウザ上でページ遷移なしに画面を変更できることと、サーバにかかる負荷が低いというのが良い点ですね(あまりすごいことすると、今度はユーザに大きな負担を強いることになりますが、、、)

ただ、javascriptはブラウザによって実装が違うので、その辺が面倒なところです。



結局、用途に合わせて、良いところを組み合わせて使うというのが一番いい方法かなと思っています。
回答になっていますでしょうか?

正直なところ、どちらでも、、、といったところです。
あえて「旬」というならば、PHPなんでしょうね。きっと。
どちらも既に「旬」ではないと思いますが。。。

PHPの場合、CGIで立ち上がるワケではないので、動作はPerl/CGIと比べて軽快です。
ですので、動的なページ生成を考えるならば、PHPのほうが良いでしょう。

正直、PHPはプログラムの一部を改造する程度しかできませんのでなんとも言えませんが、Perlは文字列処理が強力なのは、Webにたくさん情報があるとおりで、私も実感しています。
その一...続きを読む

QCGIをアスキー転送モードでアップすると「Internal Server Error」となります。

CGIをダウンロードして、サーバーにアップロードしたのですが、
CGIが作動せず、「Internal Server Error」となってしまいます。
KENTのフリーCGIほか、いろいろなCGIで試してみても同様です。
転送モードやパーミッション等の基本的な設定は間違っておりません。
他のサーバーであれば、問題なく動きました。

いろいろと試したところ、どうやら改行コードの問題のようだったため、
ダウンロードしたCGIファイルを、エディタにてLFに変換して保存し、
バイナリ転送モードにてアップロードしたところ、作動しました。

通常であれば、このようなことをしなくても、ダウンロードしたCGIファイルを
アスキー転送モード(もしくは自動)でアップロードすれば
作動すると思うのですが、この原因は何なのでしょう?
サーバー側の設定の問題なのでしょうか?

どなたかもし分かりましたら、ご教授お願いいたします。

Aベストアンサー

他のサーバで問題がなく特定のサーバのみダメなのは、ftp サーバの設定が原因だと思います。
CGI の1行目は #!/usr/bin/perl (または #!/usr/local/bin/perl) になっているかと思いますがが、
末尾の改行を変換していないと、Unix のシェルは #!/usr/bin/perl(CR)(LF) から (LF) のみを除去して、
/usr/bin ディレクトリに perl(CR) というファイルを探しに行き失敗します。

#!/usr/bin/perl を #!/usr/bin/perl -- のように変更すると、アスキーモードでもうまく行くかもしれません。

QCGI アップロードエラー

CGIでトップページを作成していました。
変更しようと思いGOLIVEで編集しアップロードしなおしたところ
Internal Server Errorが出てしまうようになりました。慌ててもとに戻しましたが、戻らなくなりました。文字コード等一切いじっておらず、リンク先を変更しただけでした。GOLIVEがいけないのかと思いテキストエディットでやり直しましたが、うまくいきません。ちなみにFetchの中のindex.cgiをテキストファイルで見ると日本語のところは全て文字化けしているような状態になっています。どなたか解決方法ご存知ではないでしょうか?

Aベストアンサー

サーバはLinuxという前提ですが、
パーミッションが正しく設定されているでしょうか?
FTPでASCIIモードで転送されていれば問題無いと思いますが、改行コードはLFだけに
なっているでしょうか?

QCGI によるファイルのアップロード

こんにちは。Perl初心者です。
ファイルのアップロードのプログラムを作ったのですが(と言っても書籍の丸写しですが..)サーバー上でエラーになってしまいます。どこが間違っているか教えて下さい。
環境:@niftyのホームページ(CGIは許可されています。), PC: Windows XP

ソース:
#!/usr/local/bin/perl

use CGI qw(:standard);

$file1 = param('file1');

open OUT, "> $file1";
while(<$file1>){
  print OUT $_;
}
close OUT;

$file2 = param('file2');

open OUT, "> $file2";
while(<$file2>){
  print OUT $_;
}
close OUT;

print <<"EOL";
Content-type: text/html

<html>
<body>
Files have been uploaded.<br>
$file1<br>
$file2<br>
</body>
</html>

EOL

exit;

こんにちは。Perl初心者です。
ファイルのアップロードのプログラムを作ったのですが(と言っても書籍の丸写しですが..)サーバー上でエラーになってしまいます。どこが間違っているか教えて下さい。
環境:@niftyのホームページ(CGIは許可されています。), PC: Windows XP

ソース:
#!/usr/local/bin/perl

use CGI qw(:standard);

$file1 = param('file1');

open OUT, "> $file1";
while(<$file1>){
  print OUT $_;
}
close OUT;

$file2 = param('file2');

open OUT, "> $file2";
...続きを読む

Aベストアンサー

・とりあえず、冒頭に
use CGI::Carp qw(fatalsToBrowser);
と書くことを勧めます。これを書いておくとブラウザ上にエラーの内容が表示されます。

・ファイルをopenする時に、openが成功したかどうかを捕捉するようにした方がいいです。
or die "cannot write $file : $!";
これを書いておけばopenが成功しているかどうか確認できます。(Permissionの設定でエラーを起こしていることが多々あります。)

・HTMLにenctypeを指定していますか?(アップロードする時のみ、指定する必要があります)
enctype="multipart/form-data"

上を踏まえて、少し書き直したのが下になります。
CGI
#!/usr/local/bin/perl

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

my $file = param('file');
my $fh = upload('file');

open OUT, '>', $file or die "cannot write $file : $!";
while(<$fh>){
print OUT $_;
}
close OUT;

print <<"EOL";
Content-type: text/html

<html>
<body>
Files have been uploaded.<br>
$file<br>
</body>
</html>

EOL

exit;


HTML
<html>
<body>
<form name="form1" enctype="multipart/form-data" method="post" action="test.cgi">
<input type="file" name="file" />
<input type="submit" name="Submit" value="送信" />
</form>
</body>
</html>

・とりあえず、冒頭に
use CGI::Carp qw(fatalsToBrowser);
と書くことを勧めます。これを書いておくとブラウザ上にエラーの内容が表示されます。

・ファイルをopenする時に、openが成功したかどうかを捕捉するようにした方がいいです。
or die "cannot write $file : $!";
これを書いておけばopenが成功しているかどうか確認できます。(Permissionの設定でエラーを起こしていることが多々あります。)

・HTMLにenctypeを指定していますか?(アップロードする時のみ、指定する必要があります)
encty...続きを読む


おすすめ情報