• ベストアンサー

起動できない。コードだけが表示されてしまう。

最近CGIを勉強し始めたものです。 apache2.2.9をいれ、ActivePerl(Ver5.005_03)を入れて 下記のような簡単なコードを書いて実行してみましたが起動ができません。 ===================== #!/usr/bin/perl print "abc"; ===================== なにか設定が必要でしょうか? httpd.confあたりで設定が必要な部分がありますでしょうか? 調べてみたところ、推奨する設定だったのでそのままにして テストしています。

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

  • ベストアンサー
  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.6

No.2です。 私の質問にお答えいただいてないので再確認です。 o Perl.exe は /usr/bin/ (Windowsなら C:\usr\bin)にありますか。  そうでないなら、スクリプトの1行目に書く #!/usr/bin/perl を perl.exe のパスに合わせて書換えないといけません。 もし、C:\perl\bin\perl.exe なら、#!/perl/bin/perl です。 o cgiファイルは cgi-binフォルダに置いてありますか。  apacheの初期設定は cgi-binフォルダ以外では cgiファイルは実行できないと思います。 o httpd.confで .cgiファイルが実行できるようにしましたか。  httpd.cnf の中に、  #AddHandler cgi-script .cgi という行があります。頭に付いている # を取ってください。 そうしたらいったん、apacheを止めて再起動した後、ブラウザから目的のcgiファイルをリクエストしてください。

その他の回答 (8)

  • hok212
  • ベストアンサー率66% (100/150)
回答No.9

まず、Perlが正常に動いているか否かは次のように確認します。 コマンドプロンプトを開き > perl -v [Enter] これでPerlのバージョン等が表示されれば、perl.exeへのパスが通っていると判断できます。 さて、PerlのCGIをブラウザから呼び出すとコードが表示されてしまう件ですが、 初期設定のcgi-binディレクトリ内で実行するのであれば、#6さんが回答されているとおり、 httpd.conf内の「#AddHandler cgi-script .cgi」の先頭の#を取ればOKです。 cgi-binではなくhtdocs内で実行したいのであればhttpd.confのhtdocsにあたる ディレクティブ設定内(例:<Directory "C:/Apache22/htdocs">)のoptionsに ExecCGIを追加する必要があります。 ※ここまでは Apache1.3系(正確には1.3.9以降)、2.0系共通です。 ※以下はApache2.2系に限った説明になります。 初期設定のcgi-binでもhtdocsでもない、httpd.conf内にてディレクティブ設定を 行っていない場所で実行させたい場合は、extraディレクトリ内にある userdir.conf で 設定を行い、この設定ファイルをhttpd.conf側で読み込んでやる必要がありますが、 失礼ながら質問者さんにはまだ敷居が高いと思いますので割愛します。 ※どうしてもこの設定を行いたいのであれば、引き続き質問してください。 ※1.3系、2.0系であれば、上記の説明すべてをhttpd.confで行います。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.8

「コードだけが表示されてしまう。」のコードって、ソースコードですか? エラーコードですか? 私はソースコードだと思ってましたが、確認させてください。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.7

No.3 です。 > >デフォルトでは、CGI禁止だったかも。 > これはどこを見たら禁止になっているのかわかるのでしょうか? さくっと答えられる単純なものではありません。 前回の参考URLの内容で、判らない部分があるのでしょうか?

  • kyotokyo
  • ベストアンサー率35% (27/77)
回答No.5

何度もすいません print "content-type:text/html\n\n"; を入れてみるとどうですか?

noname#165473
質問者

お礼

ありがとうございます。 でも結果は同じでした。

  • kyotokyo
  • ベストアンサー率35% (27/77)
回答No.4

まずapacheが正常かみるために apacheのルートディレクトリに適当なhtmlファイルを置いて http//localhost/○○.htmlもしくはhttp://127.0.0.1/○○.html でアクセスできるか確認します。 これで正常に見れるようだとapache自体は動いてることになるので 次はapacheから.plもしくは.cgiファイルを開いたとき 正常にperl.exeが呼び出せているか確認します。 apacheの設定ファイルを見て確認しましょう。 以上の二点が正常なら基本的には動くはずです。 フリーソフトの「Perlをはじめよう!」等でperl.exeが正常か確認してもよいでしょう。 http://www.vector.co.jp/soft/win95/util/se169799.html これで駄目なら一度アンインストールしてみて ネットの指南サイト等をみながらやったほうが良いと思われます。

noname#165473
質問者

補足

はい。apacheは正常に動いています。 >正常にperl.exeが呼び出せているか確認します。 >apacheの設定ファイルを見て確認しましょう。 この部分が気になったんですが正常に呼び出せているかの 確認はどうするのでしょうか?

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.3

マニュアルは読まれましたか? 参考URLです。 デフォルトでは、CGI禁止だったかも。

参考URL:
http://www.apache.jp/manual/howto/cgi.html
noname#165473
質問者

お礼

>デフォルトでは、CGI禁止だったかも。 これはどこを見たら禁止になっているのかわかるのでしょうか?

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.2

「実行してみた」 というのはどういうふうにしたのですか。ブラウザから、たとえば (1) http://localhost/apache/cgi-bin/xxx.cgi とリクエストしたのですか。 (2) file:///C:/apache/cgi-bin/xxx.cgi とリクエストしたのですか。 もし、(2)ならば実行されず、ファイルの中身がそのまま表示されます。 (1)でリクエストしたのにファイルの中身がそのまま表示されたのなら、 o Perl は /usr/bin/ (Windowsなら C:\usr\bin)にありますか。 o apacheを起動しましたか。 o cgiファイルは cgi-binフォルダに置いてありますか。(設定によりますが) o httpd.confで .cgiファイルが実行できるようにしましたか。 もし、上記のことが正しいのなら、このスクリプトにはヘッダ出力行がありませんから、500 InternalServerError になるはずです。 ブラウザ表示行に先だって print "content-type: text/html\n\n"; を記述しないといけません。 ===================== #!/usr/bin/perl print "content-type: text/html\n\n"; print "abc"; ===================== ※No.1さんは何か勘違いされたようです。

noname#165473
質問者

お礼

ありがとうございます。 はい。(1)とリクエストしました。 apacheも起動しています。 http://localhost も正常に表示されます。 気になりましたけどこれはどう設定したらよいでしょうか? o Perl は /usr/bin/ (Windowsなら C:\usr\bin)にありますか。 o cgiファイルは cgi-binフォルダに置いてありますか。(設定によりますが) もしかしたらこれらが関与しているかもしれません。。。

  • octave-G
  • ベストアンサー率39% (41/104)
回答No.1

print "abc";→prinf "abc";

noname#165473
質問者

お礼

ありがとうございます。 でもこの部分を修正しても結果は同じでした・・・ 心当たりありますか? 何らか設定が要ると思っていてあれこれ調べているんですが それらしき情報がみつかりません。。。

関連するQ&A

専門家に質問してみよう