C言語にて簡単なCGIを作成しました。
gcc -o xxx.cgi xxx.c
コンパイルをするとそのサーバでは問題なく動きます。
コンパイルしたCGIファイルを同じ環境の別サーバに
持っていくとInternalServerErrorとなり実行できません。
パーミッションもディレクトリ構造もApacheの設定も
サーバ名、IPアドレスを除いて同じ設定です。

これは動作させるサーバ毎にコンパイルする必要が
あるものなのでしょうか?もしサーバ毎にコンパイルする
必要があるのであればそれはどうしてなのでしょうか?

もしくはなにか間違っているのでしょうか?

お手数ですが、お分かりになる方、お教えください。
よろしくお願いします。

A 回答 (3件)

サーバが Apache ということで、Internal Server Error になった時には、必ずログファイルにその理由が残されているはずですが、それはチェックされましたか?


そのメッセージを書いていただければ、何かお役に立てるかも知れません。
多分、OS(特にDLL)のバージョンの違い等により、ランタイムエラーが起こっているのだとは思いますが…

この回答への補足

すいません。Apacheのerror_logは以下のとおりです。
[Wed Nov 28 18:27:24 2001] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: /usr/local/apache/cgi-bin/xxx.cgi

ソースはサンプルソースを使いました。
#include <stdio.h>
#include <stdlib.h>
char *getenvs(char *str){
char *ev;
ev = getenv(str);
if( ev == NULL ){
ev = "none";
}
return(ev);
}

main(){
printf("Content-type: text/plain\n\n");

printf("SERVER_SOFTWARE = %s \n",getenvs("SERVER_SOFTWARE"));
}

上記ソースを gcc -o xxx.cgi xxx.c でコンパイルしました。

OSはLinuxOSでディストリビュータ、カーネル共に同じバージョンです。

OSのバージョンが同じであればコンパイル後のCGIを別サーバでも動作するの
ものなのでしょうか?

大変お手数ですが、ご教授ください。

補足日時:2001/11/28 19:02
    • good
    • 0

厳密に言えば、サーバごとに再コンパイルが必要です。


同じバージョンのOSでも、インストール状態によってはリンクするライブラリがインストールされない場合もありますので。
    • good
    • 0

> 動作させるサーバ毎にコンパイルする必要があるものなのでしょうか?


一般的には「OS毎に」でしょうね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ