- ベストアンサー
Apacheを入れたのにローカルでCGIが動かない
こんにちは。今CGIの勉強をしています。perlを使っているのですが、サーバーにアップする前にローカルで動作チェックをしようと思い、ApacheとActivePerlをインストールしました。 その後、Apacheを起動して、ローカルのCGIファイルにアクセスしたのですが、ページを表示できませんと出てしまいます。 ping localhostはちゃんと通ります。 環境 OS:WindowsXP HomeEdition SP2 セキュリティーソフト:無し ファイヤーウォール:解除済み Apache設定 Network Domain 127.0.0.1 Server Name 127.0.0.1 Version2.0.58 ブラウザ:IE6.0 プログラム保存先:C:\Program Files\Apache Group\Apache2\htdocs ファイル名:hello.cgi(拡張子表示有にしている。.txtなどは無い) ActivePerl:Version5.6 保存先:C:\Perl\bin(C直下) コード #!C:/Perl/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<h1>Hello World!</h1>\n"; print "</body>\n"; print "</html>\n"; exit; 参考にしたサイト http://perl.misty.ne.jp/01.html 以上よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 「サーバが見つかりません」ということは、サーバが動作していないことが考えられます。 Apacheの設定は関係ないと思います。 まず、http://127.0.0.1/で、「It worked!」のページは表示されますか? 私の予想では、それすら表示されない(サーバが見つかりません)になると思いますが? となると、原因は ・Apache(httpd)が動作していない ・ApacheのListenポートが80になっていない 位しか考えられません。
その他の回答 (3)
- Nii
- ベストアンサー率48% (79/162)
自分でサーバー環境を構築したりでなく、動作確認のみならば、個別にインストールするよりも、XAMPPで一括インストールした方が、起動・停止をウィンドウから操作出来るので、CGIの勉強に専念できるのでは? PHPがセットアップされるのは、記憶にあるが、perlがどうだったかは覚えてないけど、既にインストールしてるみたいだし・・・ http://phpspot.net/php/pgXAMPP.html
お礼
あ、そういえばXAMPPでApache使えましたね・・ すっかり忘れてました。 XAMPPもう入ってるのに 笑 XAMPPでやったら無事表示できました♪ でも、なぜApache単体で駄目なのか気になります。。
#1です。 httpdのリスタートはしましたか? 【リスタートの手順】 [スタート]→[Apache HTTP Server X.XX]→[Control Apache Server]→[Restart] リスタートする前にhttpd.confをテストしてください。 【テストの手順】 [スタート]→[Apache HTTP Server X.XX]→[Configure Apache Server]→[Test Configuration] あと気になる点としては、スクリプトの1行目が #!C:/Perl/bin/perl となっていることです。正しくは #!C:\Perl\bin\Perl.exe です。 ブラウザのプロキシの設定はどうなっていますか? localhost; 127.0.0.1; 192.168.X.X(自分のIPアドレス)を例外設定にしておかないと、プロキシでエラーになります。 ちなみに、httpd.confは[スタート]→[Apache HTTP Server X.XX]→[Configure Apache Server]→[Edit the Apache httpd.conf Configuration File]より編集できます。 正確なエラー表記を補足してください。
お礼
#!C:\Perl\bin\Perl.exeですが、最後のperl.exeは本体が小文字だったので、小文字にしてあります。CGIファイルを書き換え大文字でも試しましたが、結果は同じでした。 また、アクセス先ですが、 「http://127.0.0.1/hello.cgi」にしています。 よろしくおねがいします。
補足
ありがとうございます。 まず、リスタートですが、 [Apache HTTP Server X.XX]→[Control Apache Server]→※[Restart] ※部分が存在しませんでした。 リスタートは、一度コマンドプロンプトを閉じて、再度start Apache in consoleをクリックし、スタートさせました。 #!C:\Perl\bin\Perl.exeについては、書き換えてみましたが・・だめです。 ブラウザのプロキシですが、プロキシを使用しない状況にしてあるので、設定などはグレーアウトしています。 正確なエラー表記とのことですが、 「サーバーが見つかりません」というメッセージです。 ブラウザのタイトルがこれで、中身はページを表示できませんと出ています。オフライン状態のときに出るやつです。 もしかして、何かとても初歩的なことをミスってるのでしょうか・・? 質問の「参考にしたサイト」に出ている手順どおりにやったつもりなのですが・・。 よろしくお願いします。
Apacheは、デフォルトの設定ではDocumentRootに配置したファイルはCGIと認識されません。 httpd.confを開いて、DocumentRootの設定におけるOptionsの行を見てみてください。 Options Indexes FollowSymLinks となっていると思いますが、最後に"ExecCGI"を追加しないといけません。 Options Indexes FollowSymLinks ExecCGI あと、こちらはデフォルトで設定されていますが、*.cgiをCGIと認識してもらうために AddHandler cgi-script .cgi の表記が必要です。 デフォルトの設定に入っていると思いますが、もしかしたらコメントアウトされているかもしれません。その場合は、#を消してください。 httpd.confを書き換えたら、Restart httpdを行えば、実行できるようになると思います。
補足
ありがとうございます。 書き換えるファイルは C:\Program Files\Apache Group\Apache2\conf\httpd.confでいいですよね?httpd.default.confのほうではないですよね? Options Indexes FollowSymLinks ExecCGIをそのままコピペし、コメントアウトしていたAddHandler cgi-script .cgiの#も削除してみました。 しかし、動きません^^; 他に何かありましたご教授くださいm(__)m
お礼
なるほど・・・ http://127.0.0.1/ でもやはりページが表示されませんでした。 今回はあきらめます^^; 色々ありがとうございました。