• ベストアンサー

同じなのに結果が違う

oodaikoの回答

  • oodaiko
  • ベストアンサー率67% (126/186)
回答No.4

私が思い付くことといったら ・パーミッションが違う。(777または707になっていますか) ・改行コードが違う。(UNIX改行コードにする必要があるかも知れません) ・文字コードが違う。(Shift-JISまたは Unicodeでは動かないかも知れません) ・ファイル名が違う。(拡張子はちゃんとついてますか。また拡張子がダブッてついていませんか) といったところです。 Windows上でこれらチェックする方法や変換する方法は存じませんのでKODAMARさん御自身でお調べ下さい。 またもうすこし細かい点をあげれば ・バックスラッシュ(\)(Winではこれも円記号に見えると思いますが)に全角円記号(¥)を使っていませんか。 ・見えないところに全角の空白が入っていませんか。 といったところですが、下の補足を見る限りこちらではなさそうですね。

KODAMAR
質問者

お礼

ご回答ありがとうございます。 現在はWindows上でローカルで試しているのでパーミッションは関係ないと思います。(あれっ?関係ありますか!?) ファイル名もちゃんとなっていました。 結局一番最後に改行が入っていなかったという本当につまらない(?)ことが原因でした。 でも今後もこのようなことがないとは限らないので、そのときは回答を参考にさせていただきます!! ご協力ありがとうございました。

関連するQ&A

  • HTMLにCGIカウンターを

    初歩的なCGI(Perl)のアクセスカウンターの作り方を学びました。 今まではHTMLでHPを作成していました。そこでトップページにアクセスカウンターを付けたいのですが、当然のことながら今のトップページは「index.html」ファイルです。このファイルにCGIによるアクセスカウンターをつける場合、「index.html」のファイルを一から「index.cgi」ファイルにPerlで書き換えなければならないのでしょうか。今の「index.html」の一部分を書き換えるだけでCGIのアクセスカウンターが設置できないものでしょうか。

    • ベストアンサー
    • CGI
  • cgi-lib.plのReadParse関数

    あるパールからcgi-libを呼び出して、ReadParse関数を使おうとするとInternal Server Errorがでてしまいます。 パールの中身は #!/usr/local/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse(*in); です。 そこで3行目と5行目の行頭に#をつけて飛ばすとパールは正常に動きます。 これってcgi-lib.plのReadParse関数がいけないんでしょうか? ダウンロードしたまま何も変更していないのに..... ちなみにサーバーのパールのバージョンは5.004のようです。

    • ベストアンサー
    • CGI
  • SSIが認識されない

    こんにちは。 アクセスカウンターを設置したいのですが、HTML文にタグを埋め込んでも認識してくれません。 ちなみに以下のように書いています。 <!--#exec cmd="./counter.pl"--> <!--#include virtual="./counter.cgi"--> わたしのプロバイダはexecが使用不可なので、include用にプログラムを書き換えているのですが、counter.plもcounter.cgiも文法チェックでは特に問題は発見されません。 counter.cgiに直接アクセスするとちゃんと動いているので、プログラムの問題ではないような気がします。 フリーで配られているカウンターでやってみてもダメでした。 HTMLの問題なのでしょうか? それともブラウザー? どなたかわかる方がいらっしゃいましたら、助けてください!! お願いいたします。

    • 締切済み
    • CGI
  • 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
  • Apacheをlocalhostで動かしているのですが、Perlの引数

    Apacheをlocalhostで動かしているのですが、Perlの引数のないものやCGIはうまく動くのですが (設定はインターネットのサイトで調べました。)、exec cmd で Perlを呼び出すタグの入った Htmlを動かそうとしたら、Internal Server Errorになってしまいました。exec cmdの入って いないHtmlでもInternal Server Errorになってしまいました。ApacheではHtmlは動かせないの でしょうか、それとも設定がどこか問題があるのでしょうか。どなたかご存知の方よろしかったら 教えてください。ここのカテゴリーでよいのか悩みましたが、とりあえずよろしくお願いします。

  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 AddHandler cgi-script .cgi .plに変更。 exec cmdをHTMLファイルに埋め込みました。 <!--#exec cmd="/PROGRA~1/APACHE~1/Apache2.2/cgi-bin/counter.pl counter"--> インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ   AddType text/html .shtml と   AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。エラーログには ”指定されたファイルが見つかりません。 : don't know how to spawn cmd child process: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/counter.shtml” と記録されていました。 どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくおねがいします。

    • 締切済み
    • CGI
  • Apacheをlocalhostで動かしているのですが、Perlの引数

    Apacheをlocalhostで動かしているのですが、Perlの引数のないものやCGIはうまく動くのですが (設定はインターネットのサイトで調べました。)、exec cmd で Perlを呼び出すタグの入った Htmlを動かそうとしたら、Internal Server Errorになってしまいました。exec cmdの入って いないHtmlでもInternal Server Errorになってしまいました。ApacheではHtmlは動かせないの でしょうか、それとも設定がどこか問題があるのでしょうか。どなたかご存知の方よろしかったら 教えてください。よろしくお願いします。質問がここのカテゴリーでよかったのかわかりませんでした が、サーバーと書いてあったのでここに投稿しました。間違ってたらすいません。

  • 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がうまく動作しません。

    はじめまして。 現在独学でlinuxの勉強をしている者です。検索をしたり本を読んだりして対策を試みたのですがどうしても解決できないため、質問させていただきます。 環境は redhatlinux9 Apache2.0.40 です。 cgiを置いたディレクトリにブラウザでアクセスすると、 Internal Server Error と出てしまいます。 ログを見ると、 [error] 6099: ModPerl::Registry: Can't locate ./jcode .pl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/li b/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/pe rl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i3 86-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_per l /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at /var/w ww/cgi-bin/bbs/wforum.cgi line 11.! と表示されています。試しにwforum.cgiの11行目以下の require './jcode.pl'; require './fold.pl'; require './wf_init.cgi'; を require 'jcode.pl'; require 'fold.pl'; require 'wf_init.cgi'; と変更してみたところ、今度は (略)Can't locate fold.pl(略) at /var/www/cgi-bin/bbs/wforum.cgi line 12.! というエラーログが表示されました。 perlプログラムの文法、パーミッション、改行コード、FTP転送の際の転送モードは確認済みのため、問題ないと思われます。また、ここの過去ログを参考にして作成した #!/usr/bin/perl print<<EOF Content-type: text/html <HTML><BODY>CGI works Good.</BODY></HTML> EOF というtest.cgiは動作可能でした。 こういった場合、どのような原因が考えられるでしょうか。どうかご教授ください。よろしくお願いします。

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

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

    • ベストアンサー
    • Perl