- ベストアンサー
ptkdbを使ってCGIプログラムをデバッグしたい
#!/usr/bin/perl -d:ptkdb use CGI; print(CGI->new->header, "abc"); 原因を解明するために超簡易スクリプトを作成しました。 このスクリプトはブラウザーにabcと表示するはずです。 しかし Internal Server Error となってしまいます。 このスクリプトから -d:ptkdb の部分を取り除くと、ちゃんとabcと表示されるのです。 また、コマンド行では-dオプションの有無に関係なくちゃんとabcと表示されます。。。 誰か教えてくださいm(__)m サーバー機はRedHatLinux7.2です。
- zyousuke
- お礼率96% (890/920)
- Perl
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
$ENV{DISPLAY}を設定する必要があるとか何とか まずはApacheのエラーログを確認してはどうですか
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
ptkdb って、Devel::ptkdb ですよね? Andrew E Page / Devel-ptkdb - search.cpan.org http://search.cpan.org/dist/Devel-ptkdb/ >Perl debugger using a Tk GUI ってあるんですけど、どうやってCGIスクリプトをこれでデバッグするんでしょうか?
お礼
sakusaker7さん、ご返信ありがとうございます。 そうですDevel::ptkdbです。 デバッグのやり方ですが。。。 コマンド行でこのスクリプトを実行すると、デバッガーが起動して、ビジュアルベーシックみたいにステップ実行とかができるようになります。 これをブラウザーから呼び出したときも、同様にデバッガーが起動し、ステップ実行とかの機能が使えるそうなのです。 しかし、デバッガーが起動する気配はなく、ブラウザーはInternal Server Errorとなってしまうのです。 これの対処法を教わろうと思い、ここへ質問に参りました。
関連するQ&A
- レンタルCGIが動きません。アドバイスお願いします!
CGI初心者です。 レンタルのCGIをテキストモードでCGI可のサーバーにアップしました。 Internal Server Errorと表示され、動いてくれません。 パスは#!/usr/bin/perl パーミッションはスクリプトが755でその他が644です。 何でも結構ですのでアドバイスをお願い致します。
- ベストアンサー
- CGI
- CGI設置時に500エラーになります
CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?
- ベストアンサー
- ネットトラブル
- 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
- #!/usr/bin/perl --でも不安定です
#!/usr/bin/perl ですと全く表示されず、Internal Server Error. #!/usr/bin/perl -- でも30%ぐらいしか画面表示されません。 サーバのファイルをTeraTermで見てもおかしなファイルが見当たりません。 問題のファイルを調べる方法はありますでしょうか? Carpモジュールをuseしても相変わらずInternal ServerError.でさっぱり見当がつきません。
- ベストアンサー
- Perl
- 「CGIプログラムエラー」って何ですか?
Win.MEを使ってます。 今まで見れていたサイトがある日突然見れなくなり、以下の画面になるのですが、どうしたらまた見れるようになるでしょうか? すみませんが、素人にもわかるような説明でお願いします。 ***************************************************** 500-Internal Server Error CGIプログラムエラーのため表示することが出来ません。 多くの場合、以下のような理由が考えられます。 ・ パスの指定間違い perl のパスは /usr/bin/perl です。 ・ パーミッション(権限)が正しく設定されていません FTPソフトなどで、パーミッションを適切に設定してみてください。 ・ スクリプトの改行コードに問題があります ファイルの転送時はアスキーモードで転送して下さい。 ・ スクリプトの記述に誤りがある可能性があります 文法チェック等を行ってください。 上記が正しい場合、以下のような理由が考えられます。 ・ サーバーへの負荷が高いため実行できないCGI 負荷が高いスクリプトは、自動的に処理が中断されてエラーとなる場合があります。 ・ 混雑時等、サーバー全体の負荷が高くなっている状態 時間をおいてから再度アクセスしてください。
- 締切済み
- その他(インターネット・Webサービス)
- CGIプログラムエラー
今まで見ていたサイトが急に見られなくなりました。 こちらで過去の質問等見ましたが 私はPCについて無知なのでどのプログラムを立ち上げて どのようにすればいいのかまったくわかりませんでした。 詳しい方、どうか助けてください。 よろしくお願いします。 以下はエラーの内容です。 ******************************** CGIプログラムエラーのため表示することが出来ません。(500 Internal Server Error) ・多くの場合、以下のような理由が考えられます。 ・パスの指定違い perlのパスは/usr/local/bin/perlです。 ・スクリプトの改行コードに問題があります。 ファイルの転送時はアスキーモードで転送してください。 ・スクリプトの記述に誤りがある可能性があります。 文法チェック等を行ってください。 ・上記が正しい場合、以下のような理由が考えられます。 ・サーバー負担が高いため実行できないcgi 負担が高いスクリプトは、自動的に処理が中断されてエラーとなる場合があります。 ・サーバー仕様が異なるため対応できないcgi セキュリティ上の問題等で一部利用が制限されている関数があります。 ・混雑時等、サーバー全体の負担が高くなっている状態 時間をおいてから再度アクセスしてください。
- 締切済み
- その他(インターネット・Webサービス)
- サクラのレンタルサーバーです。CGIが動きません
サクラのレンタルサーバーを借りました。 早速CGIを試そうと思ったのですが、原因不明のInternal Server Errorが出ます。 cgi-binはいらないとのことですので、wwwにそのまま入れました。 index.htmlも同じ場所にありそれは出ますのでパス間違いではないです。 またパーミッションも777にしてみましたが駄目です。 #!/usr/local/bin/perl print "Content-Type: text/html\n"; print "\n"; print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; こんな感じで、TELNETでログインして実行も出来ます。 bash-2.05b$ ./index.cgi Content-Type: text/html <html><body>abc</body></html>bash-2.05b$ いろいろ調べたのですが ◆パーミッション→OK ◆TELNETで実行してみる→OK ◆perlへのパスは?→/usr/local/bin と /usr/bin どちらでもいいそうです。験しに変えましたが状況変わらず。 何か気が付いたことがあれば教えてください
- ベストアンサー
- CGI
- 「CGIプログラムエラー」って何ですか?
Win.MEを使ってます。 今まで見れていたサイトがある日突然見れなくなり、以下の画面になるのですが、どうしたらまた見れるようになるでしょうか? もう3ヶ月位この状態です。 すみませんが、素人にもわかるような説明でお願いします。 ***************************************************** 500-Internal Server Error CGIプログラムエラーのため表示することが出来ません。 多くの場合、以下のような理由が考えられます。 ・ パスの指定間違い perl のパスは /usr/bin/perl です。 ・ パーミッション(権限)が正しく設定されていません FTPソフトなどで、パーミッションを適切に設定してみてください。 ・ スクリプトの改行コードに問題があります ファイルの転送時はアスキーモードで転送して下さい。 ・ スクリプトの記述に誤りがある可能性があります 文法チェック等を行ってください。 上記が正しい場合、以下のような理由が考えられます。 ・ サーバーへの負荷が高いため実行できないCGI 負荷が高いスクリプトは、自動的に処理が中断されてエラーとなる場合があります。 ・ 混雑時等、サーバー全体の負荷が高くなっている状態 時間をおいてから再度アクセスしてください。
- ベストアンサー
- その他(インターネット・Webサービス)
- CGIでファイルが読み込めない
CGI初心者です。 (osはlinuxです。) #!/usr/local/bin/perl use strict; use CGI; my $file=new CGI; open(DATA,"/home/data.txt"); $file=<DATA>; close=(DATA); print "Content-type: text/html\n\n"; print "data=$file"; このスクリプトで、/home/data.txt(フルパスです)に書かれているデータを1行だけをブラウザで表示させたいのですが、表示できません。 どこがおかしいのか教えてください。 ちなみにdata.txtには実際に「abc」という文字1行しか入れていません。
- 締切済み
- CGI
お礼
dummさん、ご返信ありがとうございます。 私はただいま出張に飛ばされておりますので、 dummさんのアドバイスに対するアクションは週末に行います。 そのときご報告しますので、また見に来てくださいね! これは私が趣味で作ったサーバーなので帰宅するまで触れないのです^^
補足
dummさん、ご報告します。 Apacheのエラーログを確認したところxlibのエラーが発生しておりました。 そこで、xhostでローカルホストを追加してみたら、できました!! 私の本にもxhostで通信許可するマシンを追加する旨の記載があったのですが、 今回はローカルホストからのテストでしたので、その必要無しと、勝手に判断しておりました。 なぜか同じローカルホストでも、コマンド行からはOKで、ブラウザーからはNGのようです。 これって常識ですか^^