• 締切済み

自作CGIで、wwwサーバーエラーがでてしまいます。

AN HTTPDとAPATHEの両方で試していますが AN HTTPDの方はサーバーが見つかりませんと表示されて、 APACHEの方は、Internal Server Error(500)と表示されてしまいます。 ActivePerlの設定変更も間違えないですし、 単にテスト用の文字表示CGIすら表示されません。 どうしてでしょうか? ちなみにPerlの関連付けも出来ていて、ファイルもきちんとPerlで表示されています。 実行内容、構文等に間違いはありません。 ただ、一つのファイルだけがちゃんと表示されます。 しかしながら、そのファイルの保存場所がわかりません。 *同じ名前で沢山いろいろな場所に保存してあるため(汗) 一応全部確認しましたが、限定する事ができませんでした。 HTTP://Localhost/test.cgi で呼び出して表示できています。 Localhost/test.cgiのフォルダはどこのフォルダの事か 調べる方法が解かれば解決できる気がします。 *どこのフォルダのどのファイルが実行されているのかが特定できません。 どうか宜しくお願いします。 ちなみに、フォルダをたどっていけば解かるだろう?と 思われるかも知れませんが、ドジをしてしまい同じ名前のファイルが30以上あってなかなか特定できません(涙) 宜しくお願いいたします。

みんなの回答

  • estea
  • ベストアンサー率44% (39/87)
回答No.3

DocumentRoot がどこかわからない? Apacheで動かしてるなら httpd.conf に書いてあるでしょうに。

sato777
質問者

お礼

お返事ありがとうございました。 本当にしょうもない事を聞いてしまって。 しかしながら、ドキュメントルートが解かってファイルを見ても以前は表示されて、現在は表示されない理由がわかりません。 何か書き変えたのですが、現在の構文でもテスト用にただテキストを表示させようとしている構文なので問題ないと思うのですが表示されん。 #!/usr/local/bin/perl print "content-type: text/html\n\n"; print "<html>\n"; print "<head><title>CGIテスト</title></head>\n"; print "<body>CGI動作テスト!!</body>\n"; print "</html>\n"; __END__ あと、一行目を #!/usr/local/bin/perl-- にしてみたり #!/usr/bin/perl にしてみたりしましたが失敗に終わりました。 ちゃんと表示されていたのになぜでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

別スレッドの方にも回答しましたが、1つ、忘れていた事があったので。 実行しようとしてエラーを起こすサーバーはUnix系でしょうか? そうであれば、スクリプトのソースをWin系からUnix系サーバーにFTP転送する場合、テキストモードで転送しているか確認して下さい。 Unix系サーバーにバイナリ転送してしまうと、以下のような単純なスクリプトでさえ、一切動きません。 #!/usr/local/bin/perl print "END" これは、サーバーがスクリプトを起動する際に[LF]の直前までの名前のプログラムを呼び出そうとして 「/usr/local/bin/perl[CR]が見付からない」 と言うエラーになるからです。 バイナリ転送していて、ファイルの中身が #!/usr/local/bin/perl[CR][LF] print "END"[CR][LF] になっているので、エラーが出ている訳です。 テキストモードで転送して、ファイルの中身が #!/usr/local/bin/perl[LF] print "END"[LF] になるようにして下さい。 なお HTTP://Localhost/test.cgi が動いてしまうのは、Localhostは自分自身のPCを示していて、つまりはWin系のサーバーで動くからです。 Win系のサーバーで動いているなら改行が[CR][LF]のままでも、まったく問題なく動いてしまいますから(と言うか、Win系のサーバーで動かすなら、改行は[CR][LF]になっている必要がある)

sato777
質問者

お礼

やっと原因がわかりました!! C:/usr/local/bin/ この後になんと!Pealという”フォルダ”が作成したありました。 ですので、PerlのExeが呼び出されずに、このフォルダの方が呼び出されていて実行不能になっていたようです。 どうもいろいろお返事いただきまして、心より感謝いたしております。

sato777
質問者

補足

お返事ありがとうございます。 転送モードは、自動変換(アスキー)です。 こちらの説明不足でした。申し訳ございません。 PC上で(ローカル)Apacheを使ってCGIなどを表示させる際に、アップロードする必要はありませんのでアップロード関係の問題ではなさそうです。 以前はちゃんと動いていたのですが…。 とにかく、実行フォルダがどれなのかが特定できません。 もちろん、Apacheなどの設定などもすべてフォルダを指定しているのですが上手くいきません。 しかしながら、Http://Localhost/の表示はきちんとされています。 この、”Localhost”がどこに設定されているのか… 設定した本人がわからなくなってしまいました(涙)

全文を見る
すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.1

 An Httpd の設定を見れば、どのフォルダ上で実行されたか分かります。  デフォルトのまま使っているなら、An Httpd の実行プログラムと同じフォルダになっているはずです。

sato777
質問者

お礼

お返事ありがとうございます。 An Httpd では、うまく作動しませんでした。 Apacheの方を使ってなんとか一度だけ表示できたのですが…。

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

関連するQ&A

  • 自作CGIで、wwwサーバーエラーがでてしまいます。

    AN HTTPDとAPATHEの両方で試していますが AN HTTPDの方はサーバーが見つかりませんと表示されて、 APACHEの方は、Internal Server Error(500)と表示されてしまいます。 ActivePerlの設定変更も間違えないですし、 単にテスト用の文字表示CGIすら表示されません。 どうしてでしょうか? ちなみにPerlの関連付けも出来ていて、ファイルもきちんとPerlで表示されています。 実行内容はとりあえずテスト用で以下のとうりです。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head></head>\n"; print "<h1 align="center">CGI動作テスト!!</h1>\n"; print "</html>\n"; __END__ 今独学で自作CGIやWEBサーバー運営の勉強をしながら立ち上げています。 どなたか詳しい方、力になって下さい。 直接メールや電話でサポートして下さる方も いらっしゃいましたら、どうかお願いいたします。 どうぞ宜しくお願いいたします。

    • 締切済み
    • CGI
  • ローカル環境でのCGIエラー

    ActivePerlとAn HTTPdでWindowsXP HomeEditionのPC上でCGIを動かそうと思っています。 どちらも最新版をダウンロードしてインストールしました。 ActivePerlに関してはegフォルダ下のexample.plで動作確認が取れています。 An HTTPdに関してはhttp://127.0.0.1以下のURLを指定してページが表示されています。 ですが、htmlからcgiを呼び出そうとすると「ページを表示できません」「サーバーが見つからないか、DNS エラーです。」のエラーが出てしまいます。 試しにcgiファイルをフルパスで指定したのですが同じでした。 ちなみに、簡単なCGIプログラムtest.cgiを作成、サーバにアップして動作を確認しましたがローカルではエラーになります。 また、ローカルでコマンドプロンプトにて c:\usr\local\bin\perl c:\プログラムのパス\cgi-bin\test.cgi と入力すると内容を表示します。 コマンドプロンプトでCGIプログラムのあるcgi-binディレクトリに移動して perl -v と入力するとperlのバージョン情報を表示するので、パスは通っていると思われます。 Au HTTPdのerrors.logには Thu Aug 16 19:21:18 2007 Warning: CGI TerminateProcess 2500 error 5 とりあえず、自分で原因を絞れるであろうところはあたってみたつもりですが、何か見落としていることがあるでしょうか? もしかしたらAu HTTPdに問題があるでしょうか?

    • 締切済み
    • CGI
  • CGIのテストに失敗

    ただ今ホームページを作成中で、CGIに興味を持つようになりました。 簡単なところから実際にやってみようと思い、Active PerlとAN HTTPDをダウンロードしてインストールまで完了。 ネットのCGI講座や入門といったサイトを参考にしながら、AN HTTPDの設定はできたのですが、簡単なはず?のCGIのテストに失敗してしまいました。 以下のような記述でファイル名をtest.cgiにして、httpd.exeと同じフォルダのcgi-binというフォルダに保存、http://localhost/cgi-bin/test.cgiでブラウザから開こうとしたのですが、ダメでした。 #!C:\Perl\bin print "Content-type: text/html\n\n" ; print "Hello, World!" ; 何がまずかったのかわかりません。Active Perlはデフォルトでどこもいじっていません。環境変数のPathもC:\Perl\bin\になっているのですが…。いろいろと見てまわったのですが間違いがわかりません。 どなたか教えていただけると幸いです。

    • ベストアンサー
    • CGI
  • XサーバーでCGIを使うには??

    質問なのですが、CGIを使いたいなと思い、幾つかのサイトを 見て勉強していたのですが、どうにも上手くいきません。 私はXサーバーを使用しています。XサーバーでCGIちゃんと 使えるよっていう方がいらっしゃれば一層助かります!! サーバーに置いてある自分のCGIのファイルをクリックして 開くと背景が青緑?になってソースがそのまま表示されてしまいます。 ちなみに、CGIファイルは以下です。public_htmlの下のcgiというフォルダの下にtest1.cgiというファイル名で保存しています。 =======-===ここから================= #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body bgcolor=\"#ffcccc\">\n"; print "これはCGIのテストです。\n"; print "</body>\n"; print "</html>\n"; (文字コードはShift_JISです。) ===========ここまで=============== .htaccessのファイルも、CGIのファイルと同じ階層に入れて います。以下がそのファイルです。public_htmlの下のcgiというフォルダの下に.htaccessというファイル名で保存しています。 ==========ここから================ AddType application/x-httpd-cgi .cgi<CR><LF> (最後の行は改行しています) (文字コードはShift_JISです。) ==========ここまで================ どうすれば良いのでしょうか??ご教授お待ちしております。

    • 締切済み
    • CGI
  • C言語で作成したCGIにて「Internal Server Error」

    こんばんは。CGIについて質問させて下さい。 現象: C言語でCGIを作成し、ローカルで動作しているApacheで 動作確認をしようとしたところ、 「Internal Server Error」が出てしまいました。 質問: 上記の現象が起こったのですが、C言語でCGIを実行するには なにが足りないでしょうか? 環境: OS:WindowsXP Webサーバ:Apache 2.0.61 Cコンパイラ:gcc 3.4.4(cygwin) 状態: ○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。 ○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。 ○httpd.confの設定値(デフォルトから修正した部分) ・ServerName 127.0.0.1:8080 ・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内 Options none → Options ExecCGI ・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi ○Apacheのerror.log ~[error] [client 127.0.0.1] Premature end of script headers: test.cgi ○test.cgiのコンパイル前ソース ---ここから #include <stdio.h> int main(void){  printf("Content-Type: text/html\n\n");  printf("<html><body>Hello, World!</body></html>");  return 0; } ---ここまで ○test.cgiはcygwinにて標準出力を確認済み。 ・・・ちなみにperlでCGIを作成すると表示されます。 (ActivePerlインストール済み) perl側のソース ---ここから #! c:/perl/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "Hello, CGI!"; print "</body></html>" ---ここまで なにかおかしな点がございましたらご指摘をお願い致します。

    • ベストアンサー
    • CGI
  • 自前サーバでCGIを~

     まずはLAN内だけで掲示板などのCGIを実行できるようにしてみよう、ということでApacheを使ってCGIの設定をしているんですが、ブラウザからCGIファイルを起動してもInternal Server Errorと出てしまいます。よってそれ以前ということで・・・  コマンドラインから「perl test.cgi」のようにCGIファイルを実行してみるとちゃんと動作するんですが、「type -a perl」で検索したフルパスをそのままCGIファイルに「#!/usr/bin/perl」などのように書いても、ファイルがコマンド化されてくれません。でも、perlの実行ファイルは存在していました。  これは、どうすれば解決できるのでしょうか?

  • CGIが動かない

    ActivePerlをインストールし終えたのです。 さらに、自宅サーバのCGI動作はOKにしてあります。 なのに、CGIが動きません。 ※http://www.***********/test.cgi のようにアクセスしてるのですが・・・ OS:Win 2000 Server , AN HTTPD を使用しています。

  • activeperl5.6が起動できない

    activeperl5.6が動きません。 activeperlをインストールして、apacheのhttpd.confの中身を本を参考に編集しました。 sampleのhello.plというファイルを自分の環境ではc:\www\cgi-binというフォルダーの中にいれ、 ScriptAlias /cgi-bin/ "C:/www/cgi-bin" <Directory "C:/www/cgi-bin"> AllowOverride None Options None AddHandler cgi-script .cgi .pl でcgiの実行を許可して AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl で拡張子とperlを関連付けています。 browserからたとえばhttp://localhost/hello.plを入力すると 実行が許可されていないとブラウザーで表示されます。 Forbidden You don't have permission to access /test.pl on this server. Apache/1.3.39 Server at localhost Port 80 アパッチのエラーログを見ると、 [error] [client 127.0.0.1] couldn't spawn child process: c:/

    • ベストアンサー
    • CGI
  • cgiについて教えて下さい。

    cgiについて教えて下さい。 ■cgiが実行できません。 ・os:windows7(64bit) ・apache2.2.16(windows32bit)※ローカル ・ActivePerl(インストール済み) ※httpd.confファイル(現状) ・Options Index FollowSymLinks Includes ExceCGI ・AllowOverride All ・AddHandler cgi-script.cgi ・AddType text/html.shtml ・AddOutputFilter INCLUDES .shtml ■http://localhost/abc/test.cgi を実行すると表示できず。 ・http://localhost/ にはアクセスできます。 ※windowsネットワーク診断/トラブルシューティングの結果 →リモートデバイスまたはリソースが接続を受け付けません。 ■上記、test.cgiのソース #! c:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; # HTMLの出力 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"; print "<html>\n"; print "<head><title>Hello HTML</title></head>\n"; print "<body><p>こんにちは。これはHTML文書の例です。</p></body>\n"; print "</html>"; 以上、宜しくお願い致します。

    • 締切済み
    • CGI
  • Apache2.0とActivePerl5.8でCGIが動作しない

    ご教授願います。  掲題の通り、Win2000ProにApache2.0.48、ActibePerl5.8.1.807をインストールしローカル上にてApacheの動作確認は出来ました。  色々なサイトを調べ、現在のhttpd.confは下記のような設定となっています。 【httpd.confの主な変更点】  1:DocumentRootは別ドライブのフォルダ(C:ではない)に変更(httpd.confのファイル、229行目あたり)  2:同様に<Directory>も1と同じフォルダ(httpd.confのファイル、255行目あたり)  3:Options Indexes FollowSymLinks MultiViews ExecCGI Includesと変更(httpd.confのファイル、269行目あたり)  4:ActivePerlのインストール先は「C:/usr/local/」です。  5:test.cgiの格納場所は1で指定したフォルダと同じです。 【症状】  ブラウザのアドレスに「http://localhost」を入力するとApacheの動作確認画面が出ますが、「http://localhost/test.cgi」を入力すると『Forbidden You don't have permission to access/test.cgi on this server」と表示されます。 知識不足で申し訳ございませんが、よろしくお願いいたします。

このQ&Aのポイント
  • 副業に対する社長の考え方について質問です。
  • 良い人材を引き付けるためには給料の重要性を理解しているんでしょうか?
  • 給料が安い会社に引き付けられる人はいるのでしょうか?
回答を見る

専門家に質問してみよう