• ベストアンサー

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

はじめまして。 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というエラーは、どういうときに出るエラーなのでしょうか? 色々ファイルを操作しても、このエラーしか出ないので、どう対処してよいかよく分かりません。 不勉強で大変心苦しいのですが、 ご回答よろしくお願いいたします。

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

  • ベストアンサー
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.1

Internal Server Errorの何番でしょう?番号によって意味が違います。 500だったらパーミッションが644とかになってるんじゃないでしょうか?パーミッションを755か700にすれば動くのでは? >.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか? 644でいいです。 >このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか? プログラムの中にopen(FH,<●●.dat); みたいな記述があると思うのですが、それが <●●.datか<./●●.datとなっていれば同一フォルダですし、<./temp/●●.datとかならtempというフォルダを作ってそこに入れとくことになります。 つまりopen命令で●●.datの置き場所を指定しているのです。

leeeeeeee
質問者

補足

早速のご回答ありがとうございます。 何とか動くところまで持ってくることができました! 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/に置き換えたところうまく動きました! ありがとうございました。

その他の回答 (1)

回答No.2

業者が、、、という事なので、関係ないかもしれま せんが、もしフリーのスペースで広告等がある場合、 それが邪魔をしてるかもしれません。 No1の方の通り、詳しくはわかりません。 plは読み込みだけなので、644でもOKです。 755でも、動くと思いますが。 datは、指定された位置に置いてください。 また、cgi-binもCGIを置く場所の指定がサーバに よって違います。 cgi-binの中のフォルダーならどこでもOKなものも あれば、スペース内ならどこでもOKもあるし、cgi-bin ってフォルダーがNGの場合もあります。 サーバのcgi設置方法と、cgiの中の説明をしっかり読み ましょう。

leeeeeeee
質問者

お礼

ありがとうございます。 読み込みだけのフィアルは、644でもOKということですね。勉強になります。 詳しいことは下に書きましたが、指定されていたファイルの位置が間違っていたのでそれを修正したところ動くようになりました。 そのほかのことも大変勉強になりました。 ありがとうございました!

関連するQ&A