• ベストアンサー

APACHEのCGI-BINでC++のEXE実行

APACHEをインストールしてCGI-BINに以下のプログラム #include <stdio.h> int main(){ printf("test"); return 0; } をコンパイルしたEXEファイルを置いてブラウザで参照したところInternal Server Errorでページが表示できません。testと表示したかったのですが・・・どうすればいいでしょうか?

noname#104144
noname#104144

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

#include <stdio.h> int main(void) { printf("Content-type: text/plain\n\n"); printf("test"); return 0; }

関連するQ&A

  • WindowsXpProでC言語でCGI

    自宅のXp Proをサーバーにして,Apache2.2やメールサーバを動作させています。昨日,Apacheでssiやcgiを実行可能にして,次のような簡単なプログラムをコンパイルして,hello.exeを作って,試してみました。 #include <stdio.h> #include <conio.h> int main() { printf("Hello"); /*getch();*/ } htmlファイルは, <!--#exec cgi="counter.exe" --> <!--#include file="count.dat" --> <!--#exec cgi="hello.exe" --> としています。実は,counter.exeは自作カウンターなのですが,標準出力が表示されず,しかたなく,#includeでカウンタファイルの値を表示させています。hello.exeも同様にファイルに書き出して,includeすれば大丈夫なのでしょうが,いろいろな資料やhpを見る限り,上記ソースのように標準出力でできるはずだと思うのです・・・。 Windowsをサーバにした場合は,標準出力は表示されないのでしょうか? どなたか,アドバイスいただけないでしょうか。

    • ベストアンサー
    • 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
  • SSIで,CGIを実行するときに引数を渡したい

    /*hello.exeのソース*/ #include <stdio.h> int main (int argc,char* argv[]) { int i; printf("Content-type: text/html\n\n"); printf("Hello"); for(i=1;i<argc;i++) printf(" %s",argv[i]); return 0; } 上記のC言語で書いた実行ファイルをCGIにしています。いろいろ勉強して経験値を積んでいるところです。このCGIについて,次のように引数を付けて読んでみると, <!--#exec cgi="/cgi-bin/hello.exe?ryo+kei+yoko"--> <!--#exec cgi="/cgi-bin/hello.exe ryo kei yoko"--> [an error occurred while processing this directive]というエラーになります。そもそも,SSIでCGIを実行するとき引数は付けられないのでしょうか?実は,練習用にカウンタを自作したのですが,その書式を引数で渡そうと考えて行き詰まりました。別の方法でもいいので,ブラウザ訪問者のアクション(クリックなど)なしで,引数を渡せないものでしょうか。

    • ベストアンサー
    • CGI
  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • Apacheのcgi-bin

    ApacheでCGIを実行するためのフォルダをcgi-binとしたのですがアドレスがなんかややこしくて困っております。 その際、http://locallhost/cgi-bin/bbs/bbs.cgiとアドレスがなるのですが、これをhttp://locallhost/bbs/bbs.cgiと変えることは可能でしょうか? また、KENT-WEBさんがご提供されていらっしゃるpostmailというCGIをApacheで表示しようとするとエラーが出てしまいます。cgiは動くのですが、中に同梱されているhtmlは表示してくれません。これは、cgi-binの外にhtmlを出さなければいけないのでしょうか?よろしくお願いします。

  • シェルコマンドの実行を行いたい

    シェルコマンドの実行は system("***.exe"); で行えますけど、system関数は実行したexeファイルが閉じられるまで処理がとまってしまいますよね? system関数を呼んだ後すぐに処理を返したい時はどうしたらいいのでしょうか。 また、2つ連続で実行ファイルを実行したいときにはどうしたらいいでしょうか。 system("1.exe"); system("2.exe"); これでは1.exeが終了しないと2.exeが起動しません。 バッチファイルでも同じ事になりますよね。 同時に起動したいのです。どうしたらいいのでしょうか、systemで躓いたので、 spawnで試してみました。 #include <process.h> #include <stdio.h> int main(){ spawn(P_NOWAIT,"notepad"); printf("notepadが起動しました。"); return 0; } こうすればnotepadを閉じなくてもprintf文が実行されると思ったのですが、コンパイルすると 未解決の_spawnが_main内で参照されました。 外部参照1が未解決です。 とでます・・。 どなたか解決策を教えてください>< OS:XPです。

  • 実行結果をコマンドライン引数として渡す方法について

    test1.cはコマンドラインから引数をとり処理するプログラム test2.cは「Hello!」と出力するプログラム。 これらのプログラムをコンパイルして、次のような引数の渡し方をしてHello!と表示したいのですがうまくいきません。 実際の結果 ----------------------------------------- $ ./test1.exe ./test2.exe ($はプロンプト) $ ./test2.exe $ ----------------------------------------- 期待する結果 ----------------------------------------- $ ./test1.exe ./test2.exe $ Hello! $ ----------------------------------------- ここでプログラムの仕様を示しておきます。 プログラム1(test1.c)の中身 -------------------------------------- #include <stdio.h> main(int argc, char *argv[]){ printf("%s\n", argv[1]); } -------------------------------------- プログラム2(test2.c)の中身 -------------------------------------- #include <stdio.h> main(){printf("Hello!\n");} -------------------------------------- よろしくお願いします!

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • [Apache]/cgi-bin/以外でCGIを使いたい

    WindowsでCGIのテストをしているのですが、パスが例えば http://localhost/cgi-bin/test.cgi というようにすればcgiを実行することができるのですが、 http://localhost/test.cgi というようにして実行するには、どのように設定すればいいのでしょうか? たぶんhttpd.confの設定だと思うのですが・・。 ちなみに、インストールされているApacheのバージョンはわかりません。というのも、LaVieを買ったら、すでに C:\Program Files\Apache Group(以下) にインストールされていて、ヴァージョン情報がどこに書いてあるかわかりません。 それでもアドバイス頂けたらと思います。 また、これ(cgi-binを省略してアクセスする方法)について書かれているサイトもありましたらよろしくお願いします。

  • apache で /cgi-bin/にアクセスできません。

    Forbidden You don't have permission to access /cgi-bin/ on this server. Apache/1.3.19 Server at localhost Port 80 ブラウザで見ようとすると上のようなエラーが表示されます。 htdocs内の初期のテストのindex.htmlは参照できます。