• 締切済み

CGIが実行できません。

perl超初心者です。 といっても、実行権を付け忘れるほどの初心者ではありません。 作成したCGIが、あるサーバでは正常に動作するのに 他のサーバだとエラーになってしまいます。 エラーログが見れないため原因がわからず、 想像もつかないしで困っています。 サーバの設定などで変わってくるのでしょうか。 関係あるかどうかわかりませんが、 CGIではsystem()など使用しています。 意味もよくわからずソースを真似ているのですが、 $query_form = new CGI;などもやっています。 あとは取り立てて特別の処理はしていないのですが。。 どなたかご存知の方がいらっしゃいましたら ご回答よろしくお願いいたします。

  • Perl
  • 回答数3
  • ありがとう数3

みんなの回答

  • misoka
  • ベストアンサー率35% (56/160)
回答No.3

はじめの一歩としては、コンパイルエラーがないかどうか 確認してみては? と思います。 $ perl -cw hoge.cgi というように、cwオプションをつければ確認できます。 CGI.pmなどのモジュールが原因の場合だったら、 (その他、perlのバージョンなどの場合も) これでひっかかるはずです。 systemでなにをしているか分かりませんが、 つかっているコマンドが、そのサーバにはない場合、 (パスに含まれていない場合)がありえます。 UNIX系のサーバであるなら、コマンドがあるかどうか $ which hoge のように、whichをつかって確認してみるとよいと 思います。 また、オプションの指定の仕方も、helpオプションなど 使えそうな手段で確認してみて下さい。 ただし、systemの場合、やっている内容が原因のことも あるので、コマンドはあるし、オプションも正しいから といって、これが原因ではない、とは限りません。 何にしても、情報がほとんどないので、原因をつかむのは ほぼ不可能です。 でも、だからといって、全ソースをコピペしろ、 という積もりもありません。 部分的にソースにアヤしそうなところがあるなら、再度 お知らせ下さい。 また、サーバが何であるのか等の情報も重要です。

  • ally0417
  • ベストアンサー率33% (2/6)
回答No.2

perlの位置は合ってますか? cgiの一番最初にperlの場所を指定するかと思いますが、 そのpathがperlのインストールされている先と違うようなら動きません。 他のサーバでは正常に動作するとの事なので、一度確認その部分を確認されてみては どうでしょうか? ちなみに、perlの場所は #which perl とたたけば所在を教えてくれます。

回答No.1

サーバが変わったら、動かなくなったとの事ですが、 パーミッション関係ではないとすれば、多分モジュール関係だと思います。 useとかrequireで何か呼び出しているでしょうか。 その辺を確認してみたらどうでしょうか。

関連するQ&A

  • cgiを実行可能にするには

    webでcgiを実行可能にするには webサーバー(windows NT)側は どのような設定をすればいいでしょうか。 perlで記述したいためActive perlはインストールしました。 その他にcgiの実行を許可する設定が必要ですか? 初心者ですので、見当違いな内容でしたらもうしわけありません。

  • CGIから別サーバーのCGIの呼び出し

    以下の二つのサーバーでCGIを動作させようと考えています。  サーバーA:ユーザーからアクセスできる。  サーバーB:サーバーAからアクセスでき、ユーザーからはアクセスできない。 この環境で (1)サーバーAでリクエストを受け、簡単な処理をする。 (2)サーバーA上のCGIからサーバーB上のCGIを呼び出す。 (3)サーバーB上で処理(etc. メールの送信)を行い、処理結果をサーバーAのCGIに返す。 (4)サーバーA上で簡単な処理を行い、結果をユーザーに表示する というような処理を考えています。 perlでは、このような処理を実装することは可能でしょうか? サーバーAからサーバーBにあるスクリプトファイルを読み込んで、サーバーAで実行するということはできそうなのですが、サーバーB上のCGIはサーバーBで実行するというようなことができるのかがわかりません。 初心者的な質問で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • 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
  • system関数を使いatコマンドで指定のCGIを実行したい

    system関数を使いatコマンドで別のCGIを時間指定で動作させたいのですが、 サーバー側でどうしても実行されず困っています。 サーバーに送り込む側のCGIの記述は以下のように記述しています。 =============================================================== #!/usr/bin/perl $command = "at 22:15 09/20/2007 < /var/www/cgi01nni/mailmg/send.csh"; system $command; exit; =============================================================== send.cshは以下のように記述しています。 =============================================================== #/bin/csh perl /var/www/cgi01nni/mailmg/send2.pl > /dev/null; exit 0 =============================================================== root権限にてsshでサーバーにアクセスし、以下のコマンドを入力して 実行した際は、send2.plは正常に動作します。 at 22:15 09/20/2007 < /var/www/cgi01nni/mailmg/send.csh /etc/at.allowはありませんが、 /etc/at.denyはあります。(中身は空) サーバーに送り込む側のCGIを実行した後に、sshでatqで見ると 以下のように確認ができます。 61 2007-09-20 22:15 a apache sshで実行した際は、当たり前ですが以下のように最後がrootになります。 61 2007-09-20 22:15 a root なんとかatを実行させたいのですが、わかる方がおりましたら、 ご教授のほどよろしくお願いいたします。

  • CGIの実行ができません

    はじめまして。 現在、出欠表を作るためにperlを勉強しているのですが、 フォームの作り方を勉強しようと、本を参考に掲示板のプログラムを作った(写した?)のですが、 サーバーにupしても実行できず悩んでいます。 文法はpcheck.cgiというものを使って間違いないとでており、 権限も755にしているのでできないことは無いと思いますが、 なぜか500エラーがでてしまいます。 そのソースには他に使うファイルとして、log.txtというのがあるんですが、 自動生成されるのか分からなかったので、同一ディレクトリに つくり、666にしております。 考えられる原因はあるのでしょうか? 教えていただけたら幸いです。 必要でしたら、ソースを49にupしようと思います。

    • ベストアンサー
    • Perl
  • IISでCGIとしてのPerlが動かない

    Win2K ProにてIISでローカルサーバーでサーバーサイドスクリプトの勉強中です。 ASPは標準でついているので、PerlとPHPを組み込みました。 PHPは内部プロセス型ではなく、CGIバージョンですが、正常動作しました。 もちろんASPも。 それで問題なのですが、Perlがどうしても動きません。 PHPと同じように実行ファイルのパスや拡張子の設定はできているはずです。 しかし、いつまでたっても出力が出ず、2分くらいたってCGIタイムアウトとなってしまいます。 PerlにはActive PerlとCygwin付属のPerl両方試しましたが、タイムアウトです。 ファイルをコンソール上で実行してみましたが、Active PerlもCygwinのPerlも、期待通りの出力がなされています。 ちなみに、shファイルをCygwinのbashに関連付けて、実行させましたが、コンソール上での出力とはうらはらに、ブラウザ上ではやはりタイムアウトとなりました。 PerlのソースはいずれもほかのところのApacheでは動いているものです。 httpヘッダも正常です。 ソースの文字コードは英語のみ、EUC、改行コードcr+lf、lfのみなど、いろいろ試しましたがダメでした。 なにが原因なのでしょう。 IISを使っている方、アドバイスお願いします。

  • CGIのスクリが勝手に実行されないようにするにはどうすればいいですか?

    CGIのスクリが勝手に実行されないようにするにはどうすればいいですか? IEとかでCGIファイルを開くと中に書いてあるperlスクリプトが開いた瞬間に実行されますよね。 もしそれが変なスクリプトだったら、勝手に実行されるのは非常に怖いです。 せめて、「このページのCGIを実行しますか」と警告が出てほしいです。 CGIが勝手に実行されないようにするにはどうすればいいですか? また、CGIファイルでは普通にIEで「ソースの表示」を押してもCGIの実行結果が表示されるだけです。 ブラウザからCGIのソースを表示する事はできますか?

  • PERL 宣言文 -wについて

    Perl初心者のWEBサーバエンジニアです。 サーバの移行に伴ってCGIファイルが動作していないため、ご相談になります。 【サーバ環境】 perl実行パス      /usr/local/bin/perl シンボリックリンク   /usr/bin/perl => /usr/local/bin/perl ソース記述       #!/usr/bin/perl ヴァージョン      5.8.5 perl実行環境      http://△△△.jp/cgi-bin/ ※apacheのスクリプトエイリアス指定 options +ExecCGI -Include SetHandler cgi-script 上記の環境で、cgiファイルが500internalサーバエラーになる現象が発生しています。 ファイルは以前動作したサーバから引っ張ってきました。 原因を探っていたのですが、cgiファイルのソース記述を #!/usr/bin/perl -w と記述を変更すると正常に動作しました。 -w について 【1度しか出現しない識別子や、初期化されずに参照される変数など、危険、無駄と思われる処理の警告を出力します。実際にはもっとたくさんの種類のチェックをするようです。】 と言う事はわかりましたが、いままで、-wなしで動作していたので、-wなしで動くよう、perlの設定を変更したいとかんがえております。 なにぶんPERL初心者ですので、同様の事象で知見がある方、ご教授を宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIでフォームデータを取得できません

    CGI(perl)の標準入力についてお伺いいたします。 PC上でテストし動作を確認したCGIをプロバイダのCGIサーバに移植しましたが、 正常に実行終了するものの、標準入力によるフォームデータの取得ができません。 フォームデータを受け取る変数が空になってしまいます。 PCとプロバイダのCGIサーバとでは、CGIスクリプトの記述方法が異なるのでしょうか。 書籍、ネットをだいぶ調べましたが、解決策が見当たりませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただきたいです。 (1)PC動作環境 a.OS: Windows 7 b.ブラウザ : Interne Eexplorer 11 c.CGIサーバ: Apache 2.4 d.perl : Activeperl 5.20 (2)CGIスクリプト(標準入力の部分) 尚、フォームでは、method="POST"を指定しております。 # フォームデータの取得 if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; }

    • 締切済み
    • CGI
  • Ajax⇒CGI

    JavaScriptは結構知ってますが、 AjaxとPerlに関しては初心者のものです。 早速ですが質問です。 Ajaxで送信したデータをCGI(Perl)で処理して、 サーバーのテキストに保存する方法が良く分かりません。 サーバーはCGIを許可しているところを使っています。 どなたか詳しい方、ご教授お願いします!

専門家に質問してみよう