お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2015-01-28 17:10:25

kojikoby
新しいメンバ
登録日: 2015-01-28

c言語によるCGIが動きません

初心者です。Ubuntu(英語版)にApache2を入れてWebサーバを構築していますが、C言語で作ったHello WorldプログラムをUbuntuのFireFoxから呼ぶと下記のポッポアップが表示されてHello Worldが表示されません。リモート(Windowsマシン:同じネットワーク上)から呼ぶとこのcgiファイル自体がダウンラインされます。ブラウザにHello Worldメッセージを表示するにはどうしたらよいのでしょうか?なお、同じ構成でPHPによるCGIはちゃんと動作しています。
[ポップアップされるメッセージ]
Opening cgi_test.cgi、You have chosen to open: cgi_test.cgi which is BIN file(8.4KB) from: http://localhost Would you like to save this file?
[ブラウザ]
Firefox 34.0(Mozilla Firefox for Ubuntu canonical - 1.0)にhttp://localhost/cgi_test.cgiを指定する
[プログラム:hello.c]
#include <stdio.h>

int main(void){

    printf("Content-type: text/plain\n\n");
    printf("Hello, World!");

    return 0;

}
[コンパイル]
% gcc -o cgi_test.cgi hello.c
[パミッション]
-rwxrwxrwx 1 root root  8563  1月 28 16:06 cgi_test.cgi
[バージョン]
Ubuntu 14.04.1 LTS
Apache2/2.4.7 (Ubuntu)

アドバイスをよろしくお願いします。

オフライン

 

#2 2015-01-29 01:42:06

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: c言語によるCGIが動きません

> [パミッション]
> -rwxrwxrwx 1 root root  8563  1月 28 16:06 cgi_test.cgi
パミッションは、0777では、弾かれます。
-rwxr-xr-x 1 root root  8563  1月 29 01:39 cgi_test.cgi
0755以下にします。

オフライン

 

#3 2015-01-29 08:50:51

kojikoby
新しいメンバ
登録日: 2015-01-28

Re: c言語によるCGIが動きません

早速のお返事ありがとうございました。
頂いたアドバイスに従って以下のようにパミッションを変更しましたが、残念ながら状況に変化はありませんでした。
-rwxr-xr-x 1 root root  8563  1月 28 16:06 cgi_test.cgi

オフライン

 

#4 2015-01-29 09:30:56

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: c言語によるCGIが動きません

kojikoby による投稿:

早速のお返事ありがとうございました。
頂いたアドバイスに従って以下のようにパミッションを変更しましたが、残念ながら状況に変化はありませんでした。
-rwxr-xr-x 1 root root  8563  1月 28 16:06 cgi_test.cgi

PHPの、CGI ファイルと同じ場所で、できないのですよね?
perl 等の cgi は、動作しますか?
参照: http://www.server-world.info/query?os=Ubuntu_14.04&p=httpd&f=2

オフライン

 

#5 2015-01-29 14:37:22

kojikoby
新しいメンバ
登録日: 2015-01-28

Re: c言語によるCGIが動きません

おかげさまで、教えていただいた参照ページに示された手順を適用することで問題は解決し、Hello Worldメッセージが表示されるようになりました。バイナリのcgiはこの手順を適用して拡張子を特定しないとcgiとみなされないのではないかと思いました。

なお、PHPのcgiは同じディレクトリで動作していました。問題が解決したのでPerlのcgiの試験は行っておりません。

お世話になり、大変ありがとうございました。

オフライン

 

#6 2015-01-29 15:18:45

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: c言語によるCGIが動きません

> バイナリのcgiはこの手順を適用して拡張子を特定しないとcgiとみなされないのではないかと思いました。
実行形式のスクリプト(単体で、実行可能な、シェルスクリプト、php、 perl 等)も同様です。

php は、モデュール形式(mod_php を使うもの)で、動作しているのではないでしょうか?

オフライン

 

#7 2015-01-29 20:28:12

kojikoby
新しいメンバ
登録日: 2015-01-28

Re: c言語によるCGIが動きません

PHPにはCGIとモジュールという2つの実行形式があるのですね。知りませんでした、。ご指摘の通り、私が動かしたPHPはモジュール形式だったようです。PHPであっさり動いたためにCで動かない原因を調べる手掛かりを失っていました。
Linuxの世界はなかなか複雑ですね。大変勉強になりました。
また何かありましたらその節はよろしくお願いいたします。

オフライン

 

Board footer

Powered by FluxBB