• 締切済み

Perlが動作しない?

色んな所でお世話になってます。 皆様にはいつも親切にお答え下さって、本当に感謝しています。 今回、CGIを使ってやりたいことがあり、翔泳社から出版されている 『10日でおぼえるPERL/CGI 第2版』 という本を買ってきました。 が、インストール場所、apacheの設定、入力など、何も間違っていないのに、動作してくれません。 状況として、WEBページで開くと、txt(もちろん拡張子はcgiに変更してあります)の内容がそのまま出力されます。 本来ならばprintのダブルコーテーション内だけが出力されなければいけない筈(本の写真にはそう写ってる)なんですが、WEBページ(127.0.0.1)を開いても #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; と表示されるだけなんです。 apacheにはうまく接続できているので、問題はPERL.EXEの方だと思うのですが… 再インストールしてもムダな努力でした。 本の支持通りやってるつもりなので原因が思いつきません。 どこに原因があるのでしょうか? 可能性はたくさんあるんだと思いますが、可能な限り全て試してみますので、よろしくお願いします。

みんなの回答

回答No.2

#1さんと同じことなんですけど。 Apacheは初期設定ではcgi-binフォルダに入れないとcgiが動かない設定になっていたはずです。 まずはcgi-binフォルダ内においてアクセスしてみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

ソースコードがそのまま出てしまうということは、ApacheがCGIをCGIとして動かしてくれていません。 ということは、Apacheの設定が誤っているということになります。 DocumentRootや普通のAliasにCGIを置くならそのディレクトリに対するOptionsにExecCGIを追記する必要があります。(Allも可です。但し、Allは全てのオプションを有効にするものです) で、CGIとして動かすファイルの拡張子は AddHandler cgi-script で指定したものになります。 ScriptAliasにしたディレクトリに置いた場合は、拡張子に関わらず、全てCGIとして動かすようになります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • htmlからテキストを返すperlを実行する方法

    アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、 <img src="./counter.cgi"> と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか? 以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。 ■cgiプログラム(test.cgi) #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "TEST TEXT"; exit 0; ■htmlファイル <html><head></head> <body> <br> <hr> <object data="./test.cgi" type="text/plain"></object> <hr> </body> </html> perlもhtmlも独学で学んだ基礎レベルだと自分で思っています。 どなたか突破口となるヒントをお願いします。

    • ベストアンサー
    • Perl
  • Apache初心者です

    本日一度質問しました。 10日で覚えるPerl/CGI入門教室という参考書を買って ApacheとActivePerlをインストールしました。 Apacheはバージョン5.1.2600.0になっています。 これで、インストールは完了し、本書の通りに インストール先も完璧に出来ているはずです。 第一日目のお勉強が  #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; これでブラウザには Hello Perl ! と表示されるはずなのですが #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; ↑このまんまが表示されます。 一日目でつまずいてしまって途方にくれてます。 WindowsXP ウイルスバスター2006が入っていて 3台のPCをルーターで繋げています。 どこに間違えがあるのでしょうか? 初歩的なことですみません。

    • ベストアンサー
    • CGI
  • レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい

    レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい。 レンタルサーバー会社からは、「cgi-bin」フォルダにcgiファイルを配置(アップロード)すれば ブラウザで見れると説明を受けました。 用意したcgiファイルは以下の内容です。 _____________________________ #! c:/perl64/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; #さいころを振る。 $n = int(rand 6) + 1; #HTMLの出力 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0.1//EN\">\n"; print "<html>\n"; print "<head><title>Perlでさいころ</title></html>\n"; print "<body>"; print "<p>さいころの目は<big>$n</big>です。</p>\n"; #御言葉を出力 if($n == 4){ print "<p>ふ、不吉な・・・。4が出ました。</p>\n"; } print "<body></html>"; __________________________________________ 一行目が原因でしょうか。ローカルで作成した、cgiファイルをレンタルサーバーに配置(アップロード)し ブラウザから見たいと考えております。 ご存知の方、教えて頂けないでしょうか。 宜しくお願いします。

  • perlからDBIを使用したpostgresへの接続でエラー

    perlからDBIを使用して、データベースにアクセスしたいと思っていますが、connectで下記のようなエラーが出力され接続できません。 ↓↓↓↓↓↓apacheのエラーログ↓↓↓↓↓↓↓ DBI connect('dbname=[mscdb]','[postgres]',...) failed: FATAL: database "[mscdb]" does not exist at /web/member/cgi-bin/dbitest.pl line 8 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ mscdbがないとエラーが出力されているように思いますが、mscdbは存在します。どういった原因が考えられるでしょうか? プログラムには以下のように記述しています。 #!/usr/bin/perl use DBI; use constant DBNAME => 'DBI:Pg:dbname=[mscdb]'; use constant DBUSER => '[postgres]'; use constant DBPASS => '[××××]'; DBI->connect( DBNAME, DBUSER, DBPASS, { AutoCommit => 0 }); print "Content-Type: text/plain\n\n"; print $DBI::errstr? $_: 'Done'; 環境は以下の通りです。    perl v5.8.2    postgres v8.1.2 vine linux dbd v1.49

    • ベストアンサー
    • Perl
  • Perl からbashを呼び出したい

    Perlからbashのファイルを呼び出そうとしています。 sendmail2.cgiは、呼び出せていまが、 sendmail3.cgiは、呼び出せません。 bashのファイル自体は、./(bashファイル)とやると実行できます。 パーミッションは、 sendmail3.cgi 655 mail_plain.sh 755 sendmail2.cgi 705 mailsend.sh 705 です。 パスの設定の問題かとも思ったのですが、よくわかりません。 宜しくお願いします。 ===sendmail2.cgi============= #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<P>sendmail test</P>\n"; print "mailtest\n"; print "</HTML>\n"; exec('/home/httpd/wwwroot/yoshida/mailsend.sh'); exit(0); ============================== ===sendmail3.cgi============= #!/usr/bin/perl exec("/home/httpd/wwwroot/bbstest/mail_plain.bash"); exit(0); ==============================

    • ベストアンサー
    • Perl
  • apache1.3とperlでCGI

    超初心者です。 windows XPでapache1.3 と active perl 5.1.2をインストールして、 CGIを動作させたいと考えています。 http://localhostを入力してapacheの起動画面は表示されていること を確認しました。 その後httpdconfに下記を追加しました。 AddHandler cgi-script .cgi .pl AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl <Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> C:\Program Files\Apache Group\Apache\cgi-binに既存で存在する printenv.plを実行しようとするとファイルのダウンロードの画面が出てきて 実行されません。printenv.plは下記のようにperl.exeへのパスだけ変更しました。 #! C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } どうすればCGIが実行できるようになるのでしょうか? ご教授ください。よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 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 以上よろしくお願いします。

    • ベストアンサー
    • CGI
  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI
  • Active Perl の動作異常について

     Active Perl を Microsoft-IIS/5.0 on Windows 2000 Server SP4 の環境にインストールして使用しています。以前は、手動で導入した Active Perl を使用していたのですが、先月 5.8.8 をダウンロードしてインストールしました。  うまく動いたと思ったのですが、cgi が実行され出力されたページよく見てみると、出力内容にかならず 「Content-type: text/html」 などの文字が先頭に含まれてしまいます(たとえば、ウェブページの左上など)。困った事に、cgi によって合成出力される GIF 画像のバイナリデータにもこの文字列が含まれてしまうため、GIF 画像として認識されずに表示できなくなってしまいました。  ここ1ヶ月ほど調べたりして設定を見直してみたのですが、どうやっても直す方法がわかりませんでした。以前の古い Perl (バージョンは失念してしまいました…) の時はこのような事はなかったです。ただし、新しいアプリケーションが古い Active Perl では動かなかったので、ロールバックする事はできません。  cgi に対する 「アプリケーションの構成」 の 「アプリケーションのマッピング」 は 「~perlのパス\perlis.dll」が記載されていて、動詞は 「GET,HEAD,POST」が設定されています。その下のチェックボックス二つにもチェックは入っています。  どなたかご存知でしたら、お力をお貸しいただければと思います。

  • CGIのファイルの種類について

    初めてCGIを勉強しています。テキストを見ながら自分のPCにApacheをインストールし、Perlもインストールしました。 #!c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Good Morning !"; とメモ帳を起動して文字を入力し、保存の時に"test.cgi"とフォルダーに保存しました。 テキストには起動するとWebブラウザに文字が出ると出てますが、私の場合、ブラウザの他にメモ帳が開いてそっちに文字が出ます。よくわからないのにもかかわらず、CGI拡張子の変更のところで、ファイルの種類を削除したり、新規で作ったり何度もやってて、開かないのでメモ帳で開くように変えたりしていたのが原因ではないかと思っています。身近で詳しい人がいないので本当に困っています。 時間がなくてテキストで勉強を始めたのですが、ちゃんと学校に行って勉強すればよかったのでしょうか。後悔と行き詰まりで頭が痛くなりました…。 どなたか、もしお分かりでしたら、教えてください。

    • ベストアンサー
    • CGI
Rubix22の2Rが特定のPCで使えない
このQ&Aのポイント
  • Rubix22をDELLのゲームPCに接続した際、2Rのマイクが全く使えない問題が発生しました。
  • 別のPC(東芝、レノボ)に接続した場合は問題なく使用できました。
  • 解決策が見つからず、購入前に問題を解決したいと考えています。
回答を見る

専門家に質問してみよう