perlのcgiで変数の中身を表示させる方法

このQ&Aのポイント
  • perlのcgiを使用して変数の中身を表示させる方法について説明します。
  • 変数の中身を確認する際に、.htaccessへの追記を回避する方法についてお伝えします。
  • また、変数の中身を確認するとScript Errorが発生する理由についても解説します。
回答を見る
  • ベストアンサー

perlのcgiで、変数の中身を表示させたい

cgiで変数の中身を表示させたい perlのcgiで変数の中身を表示させたいのですが、うまくいきません ▽環境   レンタルサーバ ▽やりたいこと   通常のブラウザ画面に、変数の中身を表示させたい ▽現状   use Data::Dumper;   print Dumper($hoge));もしくは、warn Dumper $hoge;   とすると、下記エラーとなります Script Error The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file. 指示に従い、.htaccessへ、AddHandler cgi-script-debug .cgiを追記すると、ズラズラ出てきたと何か出てきた中の一行に、変数の中身が表示されます ■質問事項   ▼変数の中身を確認する際、いちいち.htaccessへ追記するのが面倒なのですが、どうやって回避するのでしょうか?   ▼なぜ、変数の中身を確認しようとしただけで、Script Errorとなるのでしょうか?   ・書き方を間違えている?   ・書く場所を間違えている?   ・レンタルサーバの仕様?   ・perlのcgiだから? イメージしてるのは、PHPのvar_dumpなのですが…

  • re999
  • お礼率61% (476/777)
  • Perl
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

エラーになるのは Content-Type などのhttpヘッダーを出力する前に、変数の値を出力しているからでは? おそらく、そのCGIスクリプト中で下記などの様にして Content-Type ヘッダーなどを出力していると思いますが、その後に変数の値を出力してみればどうでしょう? print"Content-type: text/html\n\n";

re999
質問者

お礼

回答ありがとうございました。 >エラーになるのは Content-Type などのhttpヘッダーを出力する前に、変数の値を出力しているからでは? 大変、参考になりましたー

関連するQ&A

  • PerlのCGIとPHPを

     特定のディレクトリのCGIの中にPHP(Apacheのモジュール版)を書き、(CGIで<?php~?>とHTMLを出力させる)Perl/CGIを実行したときにその出力の中に含まれるPHPを実行させたくて、.htaccessに AddHandler application/x-httpd-php cgi AddHandler cgi-script .cgi を書いたのですが、どうやらPHPのAddHandlerの後に書かれているCGIの方が優先され、PHPが実行されず、CGIのみが実行されます。  順序を逆に書いても、今度はPHPが優先されてしまい、どちらか片方しか実行されません。  どうすれば、両方同時に実行させられるでしょうか、教えてください。  それが不可能ならば、とりあえずPerl/CGIからPHPを呼び出して先に実行させるようなことができるのならば教えてください。  ちなみに、httpd.confには拡張子cgiをすべてのディレクトリでCGIとして実行、拡張子phpもすべてのディレクトリでPHPとして実行させるようにAddHandlerされています。 Apache/2.0.58(Windows版) PHP/5.1.6 CGI: ActivePerl 5.88 です。

    • ベストアンサー
    • PHP
  • エラー表示

    CGIがエラーを出すと、サーバーが500番エラーを表示しますよね。 そのページを.htaccessのErrorDocumentを使って、自分で定義したものにできたのですが、そのエラーページをCGIにして、どこかにエラーになったページが吐いたエラー出力が入ってないかと思ったのですが、入ってないのでしょうか? -------- #!/usr/bin/perl # hoge.cgi # エラーするCGI die "hoge!"; -------- #!/usr/bin/perl # error.cgi # 500エラーページなCGI print "$_: $ENV{$_}<br>\n" foreach(sort keys %ENV); # ここでもない print foreach(<STDIN>); # ここでもない print foreach(<STDERR>); # ここでもない print ・・・どこかに "hoge!" が入ってないでしょうか? -------- # .htaccess ErrorDocument 500 /error.cgi Apache/1.3.24 Server perl 5.005_03 built for sun4-solaris

    • 締切済み
    • CGI
  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • アンケートCGIについて

    よろしくお願い致します。 ホームページにアンケートを設置したく、http://www.rescue.ne.jp/cgi/weban/ にあるCGIをダウンロードさせて頂いたのですが、必要なファイルを全てサーバーにアップしたのですが、an.cgiが正常に動作しません。 an.cgiにアクセスしたときに表示されるエラーメッセージは、以下のようになっております。 ---------------------- Script Error The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file. ---------------------- サーバーはxreaを使用しており、パーミッションは705(xrea推奨)でアップしています。他のcgi(メールフォー等)も同様のパーミッションでアップして正常に動作しているので、パーミッションの問題ではないと思うのですが..。 何が原因なのか、お分かりになる方がいらっしゃいましたら、どうかご教授下さいますようお願い致します。

    • ベストアンサー
    • CGI
  • CGIを有効にしたい

    初心者なのでCGIを動かす方法がわかりません。 自分で質問ページや同じエラー出てるものなどを調べ、 色々やってみましたが動きませんでしたので質問させて下さい。 <状況> ・WADAXのレンタルサーバを使用 ・お問い合わせフォームの記述は、 form id="form1" action="contact.cgi" method="post" onSubmit="return check();" ・同じ階層にあるcontact.cgiの属性の変更で700に設定 ・同じ階層に.htaccessをUPし、その内容は、 Options +ExecCGI AddHandler cgi-script .cgi .pl ・contact.cgiの一行目は、 #! /usr/local/bin/perl ・403エラーだったのが色々いじったら500エラーになった。 その他確認することはありますでしょうか。 お問い合わせフォームから送信を押した後が表示されないので困ってます。 わかる方、どうぞよろしくお願いします。

  • perl cgiの局所変数について

    現在perlを使ってcgiのプログラムを組んでいるのですが、初歩的なことがよくわかっておらず、難儀しております。 調べてみたのですが中々理解できず困っているので助けてほしいです。 全てを書くと長くなってしまうので端折って書かせていただきます。 現在、局所変数のエラーで詰まっております。 送信プログラムのGETを使用していたのですが、セキュリティ的に危険ということがわかりまして、 POSTを使うように変更しました。 しかし、エラーが発生し、進まなくなってしまいました。 use strictを記述した後にエラーが発生し、原因を調べたところ、大域変数の使用を禁止してしまうという効果があることがわかりました。 検索して調べて出てきた対策として、全ての変数を定義して、myを記述すれば解決できるとあったので、myを記述してみたところ、エラーが発生してしまいました。 Can't declare null operation in my at ****.cgi line 38, near "tr/+/ /;" Execution of /virtual/www/****.cgi aborted due to compilation errors. というエラーが取れないです。 @array2 =~ tr/+/ /; という記述に問題があるらしいということしかわからないのですが、よくわかりません。 すみませんが、教えて頂きたいです。

    • ベストアンサー
    • 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
  • CGIが動かない

    /var/www/html/hoge.cgiを作りました。 ----- #!/usr/bin/perl print <<'END'; Content-type: text/html; charset=utf-8 <html> <body> <p>hoge</p> </body> </html> END ----- ターミナル上でperl hoge.cgiとやった場合も、実行権を与えて./hoge.cgiとやった場合も、出力はちゃんとなされました。 httpd.confにはExecCGIとAddTypeにより、ソーステキストがそのまま表示されていたのを、Internal Server Errorまでこぎつけたのですが、なんでエラーなのかわかりません。 CGIってもしかしたら所有者がrootだと動きませんか? あとはぜんぜん思い当たることがなくて・・・。 Redhat7.3 Apache1.3.23

  • perlでつくったCGIがときどきダウンロードになります。

    はじめまして。 perl初心者です。 perlでつくったCGIがときどきダウンロードになります。 サーバーの設定では、.cgiはcgiファイルである設定はしてあるはずなのですが。。 7時以降の込みあうときなどにごくまれにそうなります。 2年くらいまえもperlをはじめて触ったときにこうなったことがあります。(これはレンタルサーバーだったのですが、) .htaccessを全てのディレクトリにおかなければいけないなどの理由があるのでしょうか? どなたか、情報をお持ちのかたお助けください。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ***.cgiの中身は第三者から見られることはあるのでしょうか?

    例えば、htaccessの中に AddType application/x-httpd-cgi .cgi .dat .txt という一文を追加し、datやtxtの拡張子でデータを記録します。 その中身は第三者からのぞくことは出来るのでしょうか? 通常ブラウザではCGIとして動こうとしますのでエラーが出るはずですが 見られるとすればどういう場合があるでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう