自分のPC上では、うまく作動していたのに、サーバにアップしてみるとエラーがでてきます。これってなぜなんでしょうか?
 perlの書き方を変えると動くって聞いた事があります。それってなぜでしょうか。
また、書き換えるコマンド、関数ってだいたい決まってると思うんですが、どういうコマンドが引っかかるんでしょうか?
 困ってます。

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

A 回答 (6件)

CSVファイルのパーミッションを666にしてみてはどうですか?


644でも動くと思うので、期待薄ではありますが・・・・
どれも、間違っていないとなると厄介ですね。

絶対に動く!スクリプトを一つ組んで、アップロードして
稼動するか確認してみたらどうですか?
それを設定して、動けばプログラム中のコマンドが引っかかっている事になりますし、動かなければ、サーバーの設定に間違いがあると言う事になります。

絶対に動くスクリプトをサンプルで載せておきます。
必要な部分を書き換えてやってみてください。

あと、CGIがリードする、CSVファイルは必ずありますか?
もし、無かったら、ファイルオープン時にエラーになりますよ。(書込みは自動生成される)


********サンプル*******
#!/usr/bin/perl

require 'cgi-lib.pl';

######ファイルオープンチェック#####このブロックは消しても良い

open (FILE,"ファイル名");
flock(FILE,2);

flock(FILE,8);
close(FILE);
#######################################
print "Content-type: text/html\n\n";
print <<"EOF";

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>絶対に動く!</TITLE>
</HEAD>
<BODY>
動いたよ!
</BODY>
</HTML>
EOF
exit ;
    • good
    • 0

こんにちわ。

またnovaakiraです。
URL載せておきますといわれましても.....
どこにでしょうね?

あと、確か投稿には自分のページへのURLを
書いてはいけないときいたことがあるのですが.....

ですからCGIスクリプトそのものとその他に必要なファイル
の名前を書いてもらえませんか?
    • good
    • 0

はじめまして。


下の人達が書いたことを繰り返し書くことはやめます。
サーバはどこのサーバを使用しているのですか?
下の人達が書いたことをやってもCGIがエラーを起こすと
いうことは...
1.はじめのラインを
  #!/usr/local/bin/perl
  にしてみる。

2.jcode.plをアップしてないとか。

3.そのCGIと一緒にアップしたファイル・フォルダの
  パーミッション・場所が違うとか。

エラーといってもいろいろあるのでどのようなエラー表示に
なるのか知りたいです。

この回答への補足

いちおう、2については、問題ありません。
パーミッションは、csvデータを多用してます。データはすべて644になっております。
URL乗せておきます。HPでは、サンプルを選択してください。
よろしくお願いします。

補足日時:2001/07/16 21:01
    • good
    • 0

サーバーでエラーが出る原因は以下の通りです。


(1)スクリプト自体のパーミッションが間違っている場合。
  通常CGIは755にします。サーバーによってパーミッションが指定されている場合があるので、確認してください。

(2)スクリプトから書込みをしている、ファイル関連のパーミッション指定漏れ
  CGIから書きこんでいるファイルのパーミッションは666にして下さい。
  又、そのファイルがディレクトリの中にある場合、そのディレクトリのパーミッションは777にして下さい。

(3)Perlのパスの間違い。
  #!/usr/bin/perlや#!/usr/bin/perlとなります。
  これも、サーバーの設定を確認して下さい。

(4)最後に、FTP時の転送モードミス
  PCからCGIファイルを転送する場合、ASCIIモードで転送して下さい。バイナリモードで転送すると、必ずエラーになります。

以上を確認して下さい。

この回答への補足

う~ん、どれも合ってるはず・・・です。

補足日時:2001/07/16 20:13
    • good
    • 0

・プログラムの最初にあるPerlのパスがあっていない


 (#!perl とかいう行)
 #!の後に、Perlのパスを設定してください。
 ホームページサービスの説明書で確認してください。
・パーミッション(属性)が正しくない
 プログラムは755、データは666等に設定してください。

参考URL:http://tohoho.wakusei.ne.jp/wwwcgi2.htm
    • good
    • 0

・ローカル・サーバでのPerlのバージョンの確認。


(サーバの方がバージョンが古くないか?)
・パーミッションの確認
(実行するファイルに実行の権限がついてるか)
・ファイル指定の確認
(絶対パス指定のファイルがないか?)
・Perlのパスの確認
(/usr/bin/perlや、/usr/local/bin/perlとか。)

まずこれを確認してみることをお勧めします。

この回答への補足

バージョンについてなんですけど、ローカルサーバを友人に組んでもらったため不明です。原因はそれなんでしょうか・・・
もしその場合、どうすればいいのでしょうか?

補足日時:2001/07/16 20:15
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

QHTMLのタグをPerlに書き換えるには?

HTMLのタグをPerlに書き換えたいのですが
コピー&ペースト感覚でPerl変換が出来るような
エディターかサイトはないでしょうか?

今のHTMLのデザインをそのまま使いたいので、、
HTMLへの書き出し(<Print>)・・・の部分だけで
いいのですが。 
御指導宜しくお願いいたします。

Aベストアンサー

全部にprint文をつける必要はないですよ。

-------------------
#!/usr/local/bin/perl

print "Content-type:text/html\n\n";

print << "END_OF_HTML";

# ここにHTMLを貼り付ける

END_OF_HTML
-------------------

↑これだけですから、
変換ソフトを使うまでもないと思います。
ヒア・ドキュメントという出力方法ですね。

QperlのLWPがページによって、正常に作動しません?

下記コードを書いたのですが、ページのソースを取得することができません。
どのように変えれば、取得することができますでしょうか?
因みに、URL部分を、
http://www.amazon.co.jp/gp/product/B000H9I0F6
とした場合は正常に取得できました。
お分かりになる方、何卒、宜しくお願い致します。


#!/usr/bin/perl

print "Content-Type: text/plain\n\n";

use LWP;
use HTTP::Cookies;
$url="http://www.amazon.co.jp/gp/product/B000GPEXX4";
$file="cookies.txt";
$browser = LWP::UserAgent->new;
$browser->cookie_jar({file =>$file, autosave=>1 });
$response = $browser->get($url);
print $response->{_content};

exit;

下記コードを書いたのですが、ページのソースを取得することができません。
どのように変えれば、取得することができますでしょうか?
因みに、URL部分を、
http://www.amazon.co.jp/gp/product/B000H9I0F6
とした場合は正常に取得できました。
お分かりになる方、何卒、宜しくお願い致します。


#!/usr/bin/perl

print "Content-Type: text/plain\n\n";

use LWP;
use HTTP::Cookies;
$url="http://www.amazon.co.jp/gp/product/B000GPEXX4";
$file="cookies.txt";
$browser = LWP::UserAgent-...続きを読む

Aベストアンサー

両方のURIを試してみましたが、私の場合どちらでも取得できました。
ので何故できないのかわからないのですが、以下のことを試すと原因がわかるかもしれません。一般的な話になっていますが…

・use strict; を入れる。
・use warnings; を入れる。
・エラーハンドリングをする。例えば$browser->get($url)をしたあとのコードを以下の様にする。
if ($response->is_error) {
print $response->error_as_HTML;
} else {
print $response->content;
}

Qなぜ CGI は Perl 言語で作成/動く環境が多いのか。

最近 CGI に興味をもちここで質問しながらネット検索をしました。
すると Perl 言語での CGI サンプルが一番多く C 言語で作る CGI の
サンプルが少し見つかりました。
私の使っている無料サーバーでも CGI は使えますが Perl 言語だけ有効です。
セキュリティの問題で SSI と組み合わせた C 言語の CGI は実行出来ないようです。

質問内容:
(1)なぜ CGI は Perl 言語が一番多いのか?→PHP、Cもあるのに
(2)なぜ無料サーバーの多くが Perl 言語しか使えないのか?
(3)処理の重い CGI を使うとサーバーがダウンするので使わないようにと
 私の使っている無料サーバー(infoseek)でなっています。どの程度の
 処理のことでしょうか?

上記の3つまたは1つでもアドバイスをして欲しいです。
回答をお待ちしています。

Aベストアンサー

>(1)なぜ CGI は Perl 言語が一番多いのか?→PHP、Cもあるのに
Cのコンパイルはどうする気ですか?
共有型のレンタルサーバでSSHログインができてCのコンパイルまでさせてくれる
サービスは自分は知りません。
PHPに関してはサーバの方針でしょうね。
infoseekはinfoseekになる前のfreewebの頃からPerlだけ利用できました。
途中から仕様変更して全サーバに対してPHPをインストールするのは手間でしょうから

>(2)なぜ無料サーバーの多くが Perl 言語しか使えないのか?
PerlもPHPも使えるサーバも結構ありますよ。

>(3)処理の重い CGI を使うとサーバーがダウンするので使わないようにと
今の利用規約は知りませんが自分の知っているときは
箱庭系、チャット系、CGIゲーム系はだめですね。

>modによりperlの難点であった実行速度も改善されていますし。
CGIモードとmod_perlのそれぞれバージョンで挙動が違うみたいで
普段はあまり利用しないですね。

QなぜCGI(Perl)ではSQLと共に稼動しているアプリが少ないのでしょうか?

最近Webアプリに興味を持ち始めた者です。

Webアプリについて調べているとPHP+MySQLはいわばセットみたいな感じなのに対してPerlなどではあまりデータベースと共稼動しているアプリを見たことがありません。

やはりPerlなどにとってデータベースとの共稼動の相性のよさはPHPに勝てないのでしょうか?

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

Aベストアンサー

なくはないですが、たしかモジュールを入れないと使えないので、少ないのでは?PHPは、そのままで使えるし。
私も、何かで見かけただけですし。
Linuxなら標準装備ですが、winではわかりません。
つうか、私もLinuxでのPerl、PHP環境を整えただけで疲れ切って、放置状態なので、使い勝手までは分かりません。

共稼動の相性のよさっていうよりは、winでのローカル環境の作成のしやすさじゃないかなー。
書籍もPHP+データーベースの方が多いっていうか、必ずセットになってるし。

まぁ、”あるよ。”だけではつまらないので、ちょっと掘り下げてみました。
あ、そういう私も、素人なので、玄人のかたはつっこみを入れてください。

QCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

アマゾンで調べると表題でCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

Aベストアンサー

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}+プログラム:処理結果 -[CGI]-> Webサーバー -[INTERNET]->ブラウザ

PHPの動作
 ブラウザ-[INTERNET]->Webサーバー:PHP:処理結果 -[INTERNET]->ブラウザ

PHPを単体で処理できるようにインストール設定すればPHPをCGIとして利用することも可能です。当然、利用範囲がCGIの域を出なくなり、PHPとしてのメリットがなくなってしまいます。
そのような非効率的な運用利用をする方はほとんどいないので書籍にしても需要が無いと思います(何らかの事情で必要な方なら、WebサーバとCGIがしっかり理解できていれば簡単に実現できるかと思います)。

ちなみに、代表的なWebサーバApacheは外部組み込み機能を使ってPerlを「PHPの動作」と同じ動きをさせることができます。
そちらは「CGI」の範疇ではなく「Webサーバー構築」の分野ですのでそういった書籍を参考にしてください。

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}...続きを読む


おすすめ情報