• ベストアンサー

ローカルではうまくいってたのに、サーバにあげるとエラーになります、これってどうして?

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

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

  • ベストアンサー
  • 911turbo
  • ベストアンサー率50% (1/2)
回答No.5

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 ;

その他の回答 (5)

  • novaakira
  • ベストアンサー率36% (60/164)
回答No.6

こんにちわ。またnovaakiraです。 URL載せておきますといわれましても..... どこにでしょうね? あと、確か投稿には自分のページへのURLを 書いてはいけないときいたことがあるのですが..... ですからCGIスクリプトそのものとその他に必要なファイル の名前を書いてもらえませんか?

  • novaakira
  • ベストアンサー率36% (60/164)
回答No.4

はじめまして。 下の人達が書いたことを繰り返し書くことはやめます。 サーバはどこのサーバを使用しているのですか? 下の人達が書いたことをやってもCGIがエラーを起こすと いうことは... 1.はじめのラインを   #!/usr/local/bin/perl   にしてみる。 2.jcode.plをアップしてないとか。 3.そのCGIと一緒にアップしたファイル・フォルダの   パーミッション・場所が違うとか。 エラーといってもいろいろあるのでどのようなエラー表示に なるのか知りたいです。

Iam2888
質問者

補足

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

  • 911turbo
  • ベストアンサー率50% (1/2)
回答No.3

サーバーでエラーが出る原因は以下の通りです。 (1)スクリプト自体のパーミッションが間違っている場合。   通常CGIは755にします。サーバーによってパーミッションが指定されている場合があるので、確認してください。 (2)スクリプトから書込みをしている、ファイル関連のパーミッション指定漏れ   CGIから書きこんでいるファイルのパーミッションは666にして下さい。   又、そのファイルがディレクトリの中にある場合、そのディレクトリのパーミッションは777にして下さい。 (3)Perlのパスの間違い。   #!/usr/bin/perlや#!/usr/bin/perlとなります。   これも、サーバーの設定を確認して下さい。 (4)最後に、FTP時の転送モードミス   PCからCGIファイルを転送する場合、ASCIIモードで転送して下さい。バイナリモードで転送すると、必ずエラーになります。 以上を確認して下さい。

Iam2888
質問者

補足

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

  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.2

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

参考URL:
http://tohoho.wakusei.ne.jp/wwwcgi2.htm
  • ro-su
  • ベストアンサー率24% (19/79)
回答No.1

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

Iam2888
質問者

補足

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

関連するQ&A

専門家に質問してみよう