• ベストアンサー

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

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

  • CGI
  • 回答数6
  • ありがとう数0

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

  • ベストアンサー
  • 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

  • ローカル環境でのCGIエラー

    ActivePerlとAn HTTPdでWindowsXP HomeEditionのPC上でCGIを動かそうと思っています。 どちらも最新版をダウンロードしてインストールしました。 ActivePerlに関してはegフォルダ下のexample.plで動作確認が取れています。 An HTTPdに関してはhttp://127.0.0.1以下のURLを指定してページが表示されています。 ですが、htmlからcgiを呼び出そうとすると「ページを表示できません」「サーバーが見つからないか、DNS エラーです。」のエラーが出てしまいます。 試しにcgiファイルをフルパスで指定したのですが同じでした。 ちなみに、簡単なCGIプログラムtest.cgiを作成、サーバにアップして動作を確認しましたがローカルではエラーになります。 また、ローカルでコマンドプロンプトにて c:\usr\local\bin\perl c:\プログラムのパス\cgi-bin\test.cgi と入力すると内容を表示します。 コマンドプロンプトでCGIプログラムのあるcgi-binディレクトリに移動して perl -v と入力するとperlのバージョン情報を表示するので、パスは通っていると思われます。 Au HTTPdのerrors.logには Thu Aug 16 19:21:18 2007 Warning: CGI TerminateProcess 2500 error 5 とりあえず、自分で原因を絞れるであろうところはあたってみたつもりですが、何か見落としていることがあるでしょうか? もしかしたらAu HTTPdに問題があるでしょうか?

    • 締切済み
    • CGI
  • なんでサーバーエラー??

    CGIをはじめて、まだまだ初心者です。 プログラムは、MS-DOSで構文チェックして、 OKとでるのに、サーバーエラーっておかしくないですか? もちろん、サーバは、自分のパソコンに アパッチいれて、Perlいれて確認するんですが、 何がエラーなんでしょう・・・? まだ、高級なCGIなど作れないので、 フリーのスクリプトをDLしてきました。 まず、構文チェックOK。 そして、Perl開いたまま、 ブラウザにアクセスします。 そうしたら、サーバーエラーとなるのです。 何を変えていったらいいのか教えて下さい。 (自分で作った簡単なアンケートフォーム とかは成功しました)

    • ベストアンサー
    • CGI
  • ローカルテストOKのPerl サーバでのエラーです。

    よろしくご教授下さい。 単純にフォームに入力された内容を確認するためのページを作成しようとしていますが、 ローカルでのテストはOKでしたが、いざサーバにアップするとサーバエラーが出ます。 ローカルのテスト環境 サーバ AnHTTP ActivePerl Ver.5 本サーバの環境 Apache Perlのバージョン 5.6.0 パーミッションは755に変更済み。 PerlのパスもOKです。 あと、考えられるエラーの可能性をご指摘頂けませんでしょうか? よろしくお願いします。 説明不足なとこがありましたら補足致します。 参考にならないかもしれませんが、一応・・・ サーバエラーの内容です。↓ Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, *******@*******.com and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. ----------------------------------------------------------- Apache/1.3.19 Server at www.********.com Port**

  • robocopy でServer2003のエラー

    robocopy C:ディレクトリ \\server\コピー先 /MIR のように書いたファイルを拡張子を.bat にしてフォルダのバックアップをしたいと思ったのですが、Server2003で「アクセスが拒否されました」、「ディレクトリを作成できませんでした」のエラーとなりコピーができません。自分のPCから自分のPCのコピーであれば動きますが、サーバーには拒否されてしまいます。 他のコマンドも含めて解決方法を教えてください。 よろしくお願いします。

  • ローカルサーバーでパーミッションエラーが発生する

    ローカルで開発実験用にサーバーを立てています。外部には接続していません。このサーバー上で、phpのrmdir関数(引数に指定したディレクトリを削除する関数)を実行したところ「Permission denied.」というエラーが発生しました。パーミッションが許可されていないとのことですが、WWW上なら分かるのですがローカルにパーミッションがあるということを知りませんでした。現在、この関数を実行できないとプログラムの動作確認が出来ないので困っています。どのようにすれば解決できるのでしょうか? 環境は以下の通りです。 OS: WindowsXP Server: Apache2.2.4 PHP: v5.2.4 自分で検索してみたところ、OSはLinuxなどを想定していることが多く、「PHPのchmod関数(パーミッションを設定する関数。ただしWindowsでは無視される。)を使え」といったような、Windowsユーザーには解決策とならない情報ばかりでした。

    • 締切済み
    • PHP
  • Internal Server Error になってしまいます。

    とある書籍を元にperlを学んでいます。まだ初心者で少々わかりずらい質問になってしまっているかもしれませんが、よろしくお願いします。 下記のコードがある事で Internal Server Error になってしまいます。 open(FILE,">>$logfile") or die("エラー:ログファイルが開けませんでした。"); $logfileの変数値には本日の日付 + .dat が入ります。 自分なりにいろいろ原因を探してみて、$logfileの変数値と同名のファイルをあらかじめ用意してやればエラーにはならない事がわかりました。 それから >> と書けば「対象ファイルが存在しない場合は新規作成される」と書籍には説明があるのですが、新規ファイルは作成されていませんが、>>はそのような動作にはならないものなのでしょうか? それから、or die 以降を削除してしまえば エラーは起きませんでした。 上記コードがあるとなぜ Internal Server Error になってしまうのでしょうか? アドバイスやご教授をよろしくお願いします。

    • ベストアンサー
    • CGI
  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • 自宅サーバでのCGI関係エラーについて

     現在私は AH HTTPD を使って自宅サーバを運営していますが、ときどきCGI掲示板のみが閲覧できなくなるときが あります。そのような時は必ず以下のようなエラーメッセージが出ます。  Error 500 CGI エラー - 以下のコマンドラインを実行できません : "perl C:\www\public_html\yybbs\yybbs.cgi ", errorcode = 2, No such file or directory  この問題はどのように解決したら良いか? どうか教えていただきたいm(_ _)m

  • cgi(perl使用)でファイルを作る方法を教えてください

    こんにちは、 perlをやっています。 プロバイダ上にperlスクリプトを拡張子cgiでUPしています。 いまやりたいことがあるんです、それは ファイルをサーバ上の領域に作るというものです (ちなみにサーバの種類はUNIX系です) ファイルはゼロバイトの何も無いテキストファイルを作りたいんですが どのような関数を使えばファイルができるのでしょうか。 また、ファイルを作った後パーミッションの変更(chmodコマンドのような 動き)をする関数等があれば教えてください。

    • ベストアンサー
    • Perl
  • Perlスクリプトが、ローカルでは実行できるが、HTTP経由では実行できない

    現在Perlスクリプトを作成し サーバにアップしました。 SSHでサーバにログインし #perl a.cgi と実行したところ(CGIとして動作させるため。中身はPerlスクリプト) Content-type: text/html <html> <body> あああああ </body> </html> のようなメッセージが表示され正常に動作しているとおもいます。 しかし、 http://www.hoge.com/a.cgi をURLとしてブラウザ上で実行すると 500 Internal Server Error になります。 パーミッションは755で正常 Perlのパスは#!/usr/bin/perlとしており、これも正常です。 文字コードはeuc-jp 改行コードLF サーバはApache/1.3.33 Perlバージョンは5.8.4 自分のパソコン上でperl+HTTPサーバ(httpd)を使うと HTMLふぁいるとして出力されます。 サーバ上でHTTPを使ってアクセスしたときのみエラーとなります。 このような現象が起こるのですが原因がわかりません。 お願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう