• 締切済み

ローカルのみで動きがおかしい

MacOS9.22でサーバーソフトに Quid Pro Quo 2.1.2、そして MacJPerl 5.2.0r4 J1を使っています。 Perlで日記のCGIを作ってサイトで使用しているのですが、ネット上にアップしてる分にはちゃんと正常に動きます。 が、ローカルのテスト環境で動かすと変なんです。 動くんですが、処理がおかしかったりします。(split処理がきちんと実行されなかったり:変なとこで区切られる) 何が原因と考えられるでしょうか? 反対の質問はよく見かけるのですが‥‥

  • Perl
  • 回答数3
  • ありがとう数3

みんなの回答

  • sisya
  • ベストアンサー率39% (97/245)
回答No.3

「分割数」は最大数を指定しているだけですので、変化はしないと思います。 一度そのデータを分割せずにweb上に出力して 化けずに「<>」と表示されているかを確認してみて下さい。 データファイルをFTPなどでアップロードした時に 文字が化けてしまっている可能性もありますし、 データをファイルから読んできた時に化けている可能性もあります。 正常なデータで一箇所だけおかしいと言うのは機種依存より データに問題が発生してしまった可能性の方が大きいと思います。

Terari
質問者

お礼

再度の回答ありがとうございます。 分割せずに出力もしてみてるのですが、特に問題はないのです。 ログファイルをローカルで1から書き直してやってみても同じ結果です。しかし同じ物をサーバー上にアップしてから実行すると、きちんと結果がでるのです。 かなり謎くさいですが、とりあえずアップすれば動いているので良しとする事にします。 ありがとうございました。

  • sisya
  • ベストアンサー率39% (97/245)
回答No.2

ローカルがMacでサーバがUnixなら改行コードの問題で間違いないですね 「split(/\r/,~」の部分を 「split(/(\r\n|\r|\n)/,~」に変更してください。 後の問題点は具体例がないので答え様がありません。

Terari
質問者

補足

回答ありがとうございます。 現在起きている具体例をあげてみますと、改行の問題ではなくsplitで指定指定している部分の分割具合がおかしいというか‥‥ ログファイルに1行づつ記述してあるものをforeachで読み込んで ($num,$id,$day,$title,$message) = split(/<>/,$line); ってな具合に1行づつ<>で分割して変数に入れてるんですが、サーバー上だと正常なのですが、ローカルだと$idと$dayがひっついたままで、2つが$idに入ってたりします(結果的に4つに分割され$messageには何も入らない)。 一部の<>だけが区切り文字として認識されてないようです(いつも同じ部分)。 最後に分割数として5を入れてみても同じ結果になります。 原因が分かりますでしょうか?

noname#25358
noname#25358
回答No.1

 可能性でしかありませんが、前提となる環境が違ってるからじゃないでしょうか。  改行コードの違いや、プラットフォームのサポートの関係で動かない関数があったり、サーバーとローカルでは環境が違います。  もしこれが正解なら、ローカルでもちゃんと動くように、プログラムを改変するしかないです(^_^;  最初から意識してれば問題ないんですけどね……。

Terari
質問者

お礼

アドバイスありがとうございます。 意識していれば問題ないものなんですか。なるほど。 サーバーにあげる前のテストなのに、変な動きをするのが気持ち悪いですが、あげてしまえばきちんと動いているので良しとする事にします。 楽な気分になりました。ありがとうございました。

関連するQ&A

  • ローカルでにPerl

    ローカルでCGIの動作テストできるようにしたいんですが、どこかでPerlをインストールしなければならない、と 聞いたことがあります。 具体的にはどうしたらいいんでしょうか? ローカルでCGIを動かすために必要なモノがあれば教えて下さい。(必要なソフトウェアのDL先などでもありがたいです) ちなみにOSはWindows Meです。

    • ベストアンサー
    • Perl
  • Mac OS.XでPerlプログラミング

    以前MacOS9.22でサーバーソフトに Quid Pro Quo 2.1.2、そして MacJPerl 5.2.0r4 J1を使ってPerlプログラミングをしていました。 最近OSをX(10.3)にしたのですが、上記2つのソフトの代わりに何を用意すればいいのでしょうか。 Perlの勉強を始めた時に購入した本に、上記2つのソフト(QuidProQuoとMacJPerl)を準備して始めましょう的にあったので意味もわからず揃えて使っていたもんで、さっぱりわかりません。 あとついでにOS.XにはPerlがインストールされている、と聞きますが「Perlがインストールされてる」ってどういう意味ですか?(そういうレスが付きそうなので‥‥)

    • ベストアンサー
    • Perl
  • ローカルサーバーでの動作確認

    CGI超初心者です. 翔泳社のPERL/CGI辞典を見ながらCGIに挑戦してます. 今ローカルサーバーでの動作確認すべく奮闘しているのですがCGI/SSIを使用するためのAPACHEの設定で頭を悩ませてます. CGIはうまく表示できたのですがどうしてもSSIが表示されないのです. ファイルは本通りに記述したつもりです. 「test.shtml」 <HTML> <BODY> <!--#exec cmd="test.pl" --> </BODY> </HTML> 「test.pl」 #!C:\perl\bin\perl print"hello!"; CGI/SSIはドキュメントルートで制限なく使用できるよう設定しました. test.shtmlは表示されてるようなんですがそこにtest.plが読み込めてないようです(よく分かりませんが…) どこが悪いのか全く分かりません. ブラウザ上でこのtest.shtmlのソースを確認したら<!--#exec cmd="test.pl" -->の部分が表示されてませんでした. 全くの初心者でどのような情報を開示すればよいのか分からないので必要な情報があれば教えていただけるとありがたいです.

    • ベストアンサー
    • CGI
  • ローカル環境での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
  • ApacheがPerlを作動してくれないのです。。。

    CGIテストのためにローカルにサーバーマシンを立てました。サーバーはApacheを使用しPHPとPerlをそれぞれインストールしました。 PHPは正常に動いてくれますがPerlだけが何回やってもyou dont have a permission ~~~と表示されます。 ためしにコマンドでperl -v と打ったら正常にPerlは作動していました。ちなみにPerlは C:Perl\bin\perlになっておりCGIスクリプトにも #!C:Perl\bin\perlと表示しています。又、confも各サイトを見てCGIが動くようにしっかり編集しました。 どうすれば動くようになるのでしょうか?

  • ローカル環境でCGIファイルが動作しません。

    Movabletypeをローカル環境で構築しようと思い、 http://likealunatic.jp/2007/06/04_xampp_mt.php 上記サイトを参考にXAMPP、XAMPP Perlアドオンをインストールしました。 おそらくApacheのバージョンは2.2.4、PERLはPerl 5.8.8になると思います。 設定が完了し、ローカルホストへのアクセスが無事成功したのですが CGIファイルへアクセスすると500エラーと表示されます。 ファイルの関連付けとScriptInterpreterSource registryの修正は行っています。 CGIファイルを直接編集し、CGIのパスを正常なものに変更すると動作するのですが・・・これは何が原因なのでしょうか? 使用OSはWINODOWS 2000 です。 よろしくお願い致します。

  • 「perl-cgiで質問です」URL打ち込みをPOSTで送信したい?

    自作したtest.cgiに、 http://localhost/test.cgi?1,2,3,4,5 このように書くと、 1 2 3 4 5 と表示されるperlプログラム ==== $qs = $ENV{'QUERY_STRING'}; @array= split(/,/,$qs); foreach(@array){ print ; print "\n"; } ==== を作ったのですが、この数字の部分を長くするとうまくいきません。 もしかすると、GET?で送信されているため、長すぎると正常に受信できないのかもしれません。 詳しくは分かりません。 しかし、何とか、URLに直接書き込んだ状態で正常に表示させたいのですが何とかする方法は無いでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • AN HTTPとActivePerlでローカルで動作させたい

     perlの勉強をはじめるため、ローカルでperlを使える環境を作ろうとしています。ActivePerl618とAN HTTP Server 1.31を使用しています。  まず、それぞれをインストールしsimple.cgiを作成、それをC:\httpd131/cgi-bin/に保存。IEでhttp://127.0.0.1/cgi-bin/simple.cgiを入力しました。けれどHTTP500内部サーバーエラーと出て表示されません。一体どうしてなのでしょうか?IEの設定か何かを変更するのでしょうか?  もし、これを読んでくださっている方が PCJapan 2000年11月号 をお持ちでしたらわかりやすいと思うのですが・・・。(もしくはこのサイトにまったく同じものがあります。http://www.zdnet.co.jp/magazine/pcjapan/0011/sp3/ )2000年11月号 98ページ 図5写真10 (サイトのページで言うと8/14の図5 写真10の文章です。)に---以下抜粋---エラーが出て表示されない場合は「C」-「Perl」にあるファイルをAN HTTPの「cgi-bin」にコピーしてから試みよう。---以上抜粋---と書いてあるのですが、一体C:\Perlのどのファイルをコピーするのでしょうか?試しにC:\Perl\bin のファイルをコピーしてMS-DOSプロンプトで先ほど作成したsimple.cgiを実行したところちゃんと動きました。けれどIEでやってもまったく動きません。これ以前(97ページ)の動作テスト(cgiが動作するかAN HTTPのテスト)は全てうまくいきました。IEでローカルでcgiを実行するにはどうしたらよいのでしょうか?ちなみにOSはWindows98SE IEのバージョンは5.50.4807.2300 SP2です。どうかお助けください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • Xamppでperlが表示されない

    Linux初心者です。 ubuntu8にXamppインストールして、htdocsにtest.cgiを入れて、http://localhost/test.cgiにアクセスすると、 「Internal Server Error」がでます。 test.cgiの内容は 「 #!/usr/local/bin/perl 」 の一行のみです。 ちなみに、おなじhtdocsディレクトリにPHPのファイルを入れてテストしたところ正常に動作しました。 ご教示願います。

  • cgiコードが表示されてしまう

    こんにちは。CGIを勉強し始めたばかりの素人で初歩的な質問で申し訳ありませんが、どうしても解決できなくて質問させて頂きました。宜しくお願いします。 win2000にてApache、active perlを使用しております。 今回初めて簡単なCGIを作ってローカルホストで確認しようとしたのですが、CGIがコードのまま表示されてしまいます。 perlインタプリタ→d:\Perl\bin\perl cgiはd:\Apache\htdocs\testフォルダに置き http://127.0.0.1/test/test1.cgiでアクセスしてみたのですが私の作ったtest1.cgiに限らずどのCGIでもコード表示されてしまいます。 何が悪いのか分からず困ってしまっています。(ここまでは入門書の指示通りに設定してきたのですが) 宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • CGI

専門家に質問してみよう