• ベストアンサー

An HTTPdでPerlを動かす

An HTTPdとPerlでCGIを動かそうと思います。 PerlをD:\usr\binに、An HTTPdをD:\Httpdにインストールしました。 ドキュメントルートをD:\html_publicに設定しました。D:\html_publicにindex.htmlを置き、IEでhttp://127.0.0.1/とするとindex.htmlが表示されました。 続いてhello.cgiをD:\html_publicに置き、http://127.0.0.1/hello.cgiとしました。すると「Internet Explorer ではこのページは表示できません」との表示がでました。 Perlが認識されないのであれば、hello.cgiのコードが表示されるものではないでしょうか。 あるいはAn HTTPdでは指定された拡張子以外は認識されないのかもしれないと思い直しても、一応CGIに関しては、 .pl,.cgi D:\usr\bin\perl.exe で定義しています。 設定のどこに間違いがあるのでしょう。

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

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

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

CGI で正しい Content-Type: を吐いてますか? HTMLの META タグだけでは不足で、レスポンスヘッダが必要かも知れませんよ。

その他の回答 (2)

  • outbrave
  • ベストアンサー率60% (231/380)
回答No.3

  #! /usr/bin/perl      print "Content-type: text/plain\n\n;   print "Hello Perl!" これでは表示されません、コピペミスですか?。 カッコが閉じてないし、セミコロンもないし。

makoji
質問者

補足

そうそうその通り。どうしようもないミスです。ごめんなさい。 オプション一般の中の「CGI出力を検査」のチェックを入れました。すると、エラーメッセージが以下のように変わりました。   Error 500   CGI エラー - Content-Type ヘッダが正しくありません。   CGI 出力メッセージ:      Bareword found where operator expected at D:\html_public\hello.cgi line 4, near   "print "Hello"    (Might be a runaway multi-line "" string starting on line 3)    (Do you need to predeclare print?)   syntax error at D:\html_public\hello.cgi line 4, near "print "Hello Perl"   Can't find string terminator '"' anywhere before EOF at D:\html_public\hello.cgi 3行目におっしゃる通りのミスがあるではありませんか。4行目に「;」が抜けているのはコピペの際に欠けたものです。結局zxcv0000さんの予見された通りでしたね。 これらを訂正してメデタク正常表記です。 ありがとうございました。

  • uwi
  • ベストアンサー率74% (55/74)
回答No.2

Internet Explorer の場合は インターネット オプション->詳細設定->ブラウズ「HTTPエラー メッセージを簡易表示する」 のチェックを外しておくと、もっとましなエラーメッセージが出ると思います。

この投稿のマルチメディアは削除されているためご覧いただけません。
makoji
質問者

補足

>HTMLの META タグだけでは不足で、レスポンスヘッダが必要かも知れませんよ。 今回試しているCGIはhello.cgiというファイル名の通り、もっとも初歩的なものです。   #! /usr/bin/perl      print "Content-type: text/plain\n\n;   print "Hello Perl!" >Internet Explorer の場合はインターネット オプション->詳細設定->ブラウズ「HTTPエラー メッセージを簡易表示する」のチェックを外しておくと、もっとましなエラーメッセージが出ると思います。 チェックをはずしてみましたが、表示は変わりませんでした。 次にhello.cgiを削除して、D:\html_publicにhello.cgiがない状態にしてhttp://127.0.0.1/hello.cgiをやってみました。するとError 404の、「見つかりません。 - CGIスクリプトまたはプログラムがありません 」というメッセージが出てきました。 hello.cgiをまたd:\html_publicに復活させてhttp://127.0.0.1/hello.cgiをやったときのログを調べました。すると、httpd.logには   127.0.0.1 - - [17/Mar/2009:19:11:02 +0900] "GET /hello.cgi HTTP/1.1" 200 0 errors.logには   Tue Mar 17 19:11:02 2009 Warning: CGI TerminateProcess 3120 error 5 と記述されていました。

関連するQ&A

  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • AN HTTPD について

    CGIのテストをするのに『AN HTTPD』というソフトが便利だということを最近知りました。 で、さっそくインストールして設定もしたのですが、実際に http://127.0.0.1/test.cgi とIEのアドレス欄に入力すると、「ページが表示できません」とでます。 しかし、http://127.0.0.1/index.html とを入力するとちゃんと表示されます。 なぜでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • AN HTTPDは・・・?

    AN HTTPDに関する情報を求めています。 設定云々ではなく、ダウンロードそのものができない状況です。 下記を見て気づいたのですが・・・ http://mizushima.ne.jp/koko/an-httpd%e3%83%bb%e3%83%bb%e3%83%bb 閉鎖・公開停止してしまったのでしょうか?

  • AN Httpdで

    こんばんは。 AN httpdで、現在自宅サーバーを運営しています。 そこで、人様にも貸し出そう。。。というわけで、 無料でレンタルサーバーをたちあげました。 しかし、色々なプランを考えるうちに、 「CGIとPHPが使えるプランと使えないプランを作ろう!」 と思い、さあやろう、というときに、 ユーザー別にCGIの使用制限やPHPの使用制限の方法が分かりません^^; この方法についてご存知の方、よろしければご回答お願いします。。。 ちなみに、WINDOWSサーバーで、 使用ソフトは「AN httpd」「TinyFTPDaemon」「DiCE DynamicDNS Client」です。

  • AN HTTPD

    昨日CD-ROMを整理していると昔サイト作るのにはまった事があり、以前作ったサイトの大量のフォルダが出てきました。 フォルダはCGIやらCSSやらバラバラで同じサイトで少し更新したものも含まれているもので200個ぐらいのフォルダがごちゃごちゃとできてしまいました。一度整理したことがあったのである程度大きく5~6サイトづつぐらいを何回も更新したり機能やデザインを変えたものがぼろぼろ出てきました。関連付いているCGIのテストを一つ一つHPスペース借りたところに挙げて確認するのは大変なので、AN HTTPDで鯖を立てローカルでやっていたのですが、久しぶりにやったものでKENTWEBの自宅マシンwww鯖計画などを見ながらやっていたのですが、とりあえずローカルでcgiは動くようになったのですが、パーミッションの設定がいらいないからか、自分の作ったhtml上からカウンタとか掲示板のcgiが呼び出せず × のままになってしまいます。(カウンタ部)urlから直にcgiを呼び出すと当然動きます。これは設定でなんとか普通にwebスペースにupしてテストしたみたいに表示出来ないものでしょうか? 後、公開用の設定もしてみたのですがNo-IPでDNS登録をしてhttp://~登録したDN~/index.html にしてもindex.htmlが表示されません。pingを打つと通っている事から設定は出来てると思うのですが。。。 グロバIPもローカルのIPに通す為にポートも開いて通ったはずなのですが この二つお分かりの方教えていただけませんか。

  • ブラウザが表示されません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします

  • ブラウザが表示されません!!!!!!

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

  • ブラウザ表示できません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”http://localhost/cgi-bin/hello.pl” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

    • ベストアンサー
    • Perl
  • omniHTTPdでのCGIの利用

    windows用のHTTPdのomniHTTPdを使って、HTTPサーバーを立てようとしています。 htmlを表示することは出来ました。が、CGIがうまくいきません、というか設定でわからない箇所があります。 普通、ISPなどのHPサービスでは、CGIを設定する際に #!/user/local/bin/perl と設定しますよね。でもこれが自宅のマシンだとどう設定して良いのかわかりません。 perl.exeは d:\test\httpd\cgi-bin\perl\ の中に入ってます。 omniHTTPdは c:\HTTPD\ の中に入ってます。 HTTPdにアクセスした時のルートが d:\test\httpd\index.html になってます。 CGIはその下の d:\test\httpd\cgi-bin\ に入れようとしています。 ちょっと説明下手でわかりにくいかもしれませんが、よろしくアドバイスお願いします。

  • perlの起動法

    perl起動法について質問なのですが、 perlでファイルを作り、一番上に#!/usr/bin/perlと書いて、perl.plという名前で保存しました。 ターミナルで$chmod 755 perl.pl $./perl.pl とコマンドをうったのですが、print文で書いたhello worldというが表示されません。 でもperl perl.plとコマンドを打つと実行されます。 一体この違いはなんなのでしょうか?学校の課題で、どうしても./perl.plとして実行させなければならないので是非解答お願いします。

    • ベストアンサー
    • Perl