• ベストアンサー
  • すぐに回答を!

サーバを移行したのですが、プログラムが動きません。

  • 質問No.1385336
  • 閲覧数73
  • ありがとう数2
  • 回答数2

お礼率 55% (19/34)

はじめまして。
Perl超初心者です。

先日、あるサイトのリニューアルをし、PHPでシステムを組んだのですが、一部のコンテンツに関しては、前の業者がPerlで組んでいたシステムをそのまま転用することになりました。

そこで、以前のデータを貰って、サーバのcgi-binのフォルダにそれらのデータをコピーし、関係すると思われるファイルのパーミッションを、755にし、
また、以前は、ファイルの一行目が、#!usr/local/bin/perl
だったのですが、
これを、#!usr/bin/perl
に修正しましたが、動いてくれません。

Internal Server Error と出てしまいます。


試しに、単純な

text.cgi

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "OK";

というファイルを置いてみたのですが、これは動いています。


ちなみに、移行しなければならないcgiファイルは、プログラムの中で、.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか?

また、このプログラムでは、
cgi-bin のディレクトリから、
data というディレクトリの中にある.datファイルを読み込むはずなのですが、このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか?


Internal Server Errorというエラーは、どういうときに出るエラーなのでしょうか?
色々ファイルを操作しても、このエラーしか出ないので、どう対処してよいかよく分かりません。


不勉強で大変心苦しいのですが、
ご回答よろしくお願いいたします。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 33% (79/234)

Internal Server Errorの何番でしょう?番号によって意味が違います。
500だったらパーミッションが644とかになってるんじゃないでしょうか?パーミッションを755か700にすれば動くのでは?

>.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか?

644でいいです。

>このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか?

プログラムの中にopen(FH,<●●.dat);
みたいな記述があると思うのですが、それが
<●●.datか<./●●.datとなっていれば同一フォルダですし、<./temp/●●.datとかならtempというフォルダを作ってそこに入れとくことになります。
つまりopen命令で●●.datの置き場所を指定しているのです。
補足コメント
leeeeeeee

お礼率 55% (19/34)

早速のご回答ありがとうございます。

何とか動くところまで持ってくることができました!

500 Internal Server Errorだったので、500番だと思います。

ファイルのパーミッションは、755に設定済みでした。


先ほど、apacheのエラーログを発見しました。

内容は、以下のようなものでした。

Can't locate A.pl in @INC (@INC contains: /export/www/cgi-bin/lib/ /usr/local/lib/perl5/5.6.1/i386-freebsd /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.00503 /usr/local/lib/site_perl .) at /usr/local/apache/cgi-bin/D/B.cgi line 25.

[Fri May 13 17:06:05 2005] [error] [client 133.82.251.225] Premature end of script headers: /usr/local/apache/cgi-bin/D/B.cgi


A,D,Bのディレクトリ名、ファイル名はふせます。

どうやら、config.plといった感じの名前のファイルを読み込んでいたようで、その中でさらに、config.cplというファイルを読み込み、そのファイルの中に、リンク先を記述していることが分かりました。

そこで、エラーログの
/export/www/cgi-bin/lib/
というディレクトリが、今のサーバにはないことが分かったので、ここを、/usr/local/apache/に置き換えたところうまく動きました!

ありがとうございました。
投稿日時:2005/05/13 18:36

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 28% (131/460)

業者が、、、という事なので、関係ないかもしれま
せんが、もしフリーのスペースで広告等がある場合、
それが邪魔をしてるかもしれません。
No1の方の通り、詳しくはわかりません。

plは読み込みだけなので、644でもOKです。
755でも、動くと思いますが。

datは、指定された位置に置いてください。

また、cgi-binもCGIを置く場所の指定がサーバに
よって違います。
cgi-binの中のフォルダーならどこでもOKなものも
あれば、スペース内ならどこでもOKもあるし、cgi-bin
ってフォルダーがNGの場合もあります。

サーバのcgi設置方法と、cgiの中の説明をしっかり読み
ましょう。
お礼コメント
leeeeeeee

お礼率 55% (19/34)

ありがとうございます。

読み込みだけのフィアルは、644でもOKということですね。勉強になります。

詳しいことは下に書きましたが、指定されていたファイルの位置が間違っていたのでそれを修正したところ動くようになりました。

そのほかのことも大変勉強になりました。
ありがとうございました!
投稿日時:2005/05/13 19:58
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ