
Ubuntu日本語フォーラム
ログインしていません。
初心者です。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)
アドバイスをよろしくお願いします。
オフライン
> [パミッション]
> -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以下にします。
オフライン
早速のお返事ありがとうございました。
頂いたアドバイスに従って以下のようにパミッションを変更しましたが、残念ながら状況に変化はありませんでした。
-rwxr-xr-x 1 root root 8563 1月 28 16:06 cgi_test.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
オフライン
おかげさまで、教えていただいた参照ページに示された手順を適用することで問題は解決し、Hello Worldメッセージが表示されるようになりました。バイナリのcgiはこの手順を適用して拡張子を特定しないとcgiとみなされないのではないかと思いました。
なお、PHPのcgiは同じディレクトリで動作していました。問題が解決したのでPerlのcgiの試験は行っておりません。
お世話になり、大変ありがとうございました。
オフライン
> バイナリのcgiはこの手順を適用して拡張子を特定しないとcgiとみなされないのではないかと思いました。
実行形式のスクリプト(単体で、実行可能な、シェルスクリプト、php、 perl 等)も同様です。
php は、モデュール形式(mod_php を使うもの)で、動作しているのではないでしょうか?
オフライン
PHPにはCGIとモジュールという2つの実行形式があるのですね。知りませんでした、。ご指摘の通り、私が動かしたPHPはモジュール形式だったようです。PHPであっさり動いたためにCで動かない原因を調べる手掛かりを失っていました。
Linuxの世界はなかなか複雑ですね。大変勉強になりました。
また何かありましたらその節はよろしくお願いいたします。
オフライン