AN HTTPD ゲストブック/コメント集(2001年11月19日15:09)


naomi nishibon2001@mail.goo.ne.jp 2001/11/22 10:17

中田昭雄さん
ご回答ありがとうございました。
原因が分かりすっきりしました。(^-^)


中田昭雄 nakata@st.rim.or.jp 2001/11/21 21:44

naomi さん、
拡張子 .cgi にした場合にそのエラーになるのは、相変わらず Perlスクリプトと判定している、ということになりますが、それはバージョン1.34 のバグです。

しかし、最新の 1.36b にしたとしても、naomi さんの場合のようにドキュメントルートに空白を含むパス(My Documents)を指定していると、別のエラーになります。
というわけで、それは次のバージョンで直します。

ドキュメントルートを C:\www にするとか、とにかく空白を含まないようにしてやれば 1.36b で大丈夫のはずですが。


naomi nishibon2001@mail.goo.ne.jp 2001/11/21 13:36

みなさん、ご親切にご回答頂きありがとうございました。
お陰様でうまくTESTが実行されました。

中田昭雄さんから、ご助言頂きました通り、拡張子.exe にした状態で
拡張子 .exe の「般」(「一般パスでも実行する」)にチェックを入れると
うまく実行されました。

しかし、
>(1)コンパイルしたファイルの拡張子を .cgi にした場合
>拡張子 .pl,.cgi の「EX」(「EXE形式の実行」)にチェックを入れてください。
の場合は前回同様、以下のエラーが出てしまいます。

Unrecognized character \002 ignored at C:\My Documents\www\hiroyasu\public_html\test.cgi line 1.  
現在、拡張子 .pl,.cgi には「般」と「EX」にcheckを入れている状態です。
原因が分かるようでしたら参考のためにもお聞かせ頂ければ幸いです。


中田昭雄 nakata@st.rim.or.jp 2001/11/20 21:22

naomi さん、
(1)コンパイルしたファイルの拡張子を .cgi にした場合
拡張子 .pl,.cgi の「EX」(「EXE形式の実行」)にチェックを入れてください。

これは、拡張子が .cgi だけだと Perlスクリプトなのか EXE形式なのかわからないので、その判定をするためです。
ここにチェックがないと無条件でPerlスクリプトだと解釈してしまいます。
EXEファイル は 最初が "MZ" であとはバイナリデータです。
最初のエラーは Perl がバイナリの \002 を発見した時点でエラーメッセージを出したものです。

(2)コンパイルして拡張子 .exe のままの場合
拡張子 .exe の「般」(「一般パスでも実行する」)にチェックを入れてください。

一般パスで .exe を実行するようにするのはセキュリティ上ちょっと問題はありますが、サーバを公開しているのでなければ大丈夫です。
「一般パスでも実行する」にチェックを入れなくても、エイリアスの設定で test.exe のパスを「実行パス」エイリアスに設定すれば、同じように実行はできます。
「般」のチェックもエイリアスの設定もしなければ、ダウンロードになります。


naomi nishibon2001@mail.goo.ne.jp 2001 2001/11/20 13:11

>nazoさん
>その中の"EXE形式の実行"にチェックを入れたらどうでしょう?

残念ながらまたダウンロードにいきました…(;_;)


nazo nazo@hotmail.com 2001/11/20 11:38

>naomiさん
>ファイルをダウンロードするようになってしまいました。
>どうしてでしょうか?

"オプション/一般" -> "一般"
のcgi設定で"exe"の拡張子があるでしょうか?
有る場合はexe拡張子を選択して"編集"ボタンを押すとexe拡張子の挙動を指定する画面が出てきますので、
その中の"EXE形式の実行"にチェックを入れたらどうでしょう?


naomi nishibon2001@mail.goo.ne.jp 2001/11/20 10:21

>いしどうさん
>exe ファイルとしてみたらどうなるでしょう?
>(つまり、test.exe というファイル名にしてみる)

ファイルをダウンロードするようになってしまいました。
どうしてでしょうか?


いしどう ishidou@po.iijnet.or.jp 2001/11/19 22:46

naomiさん>
> 以下の内容をコンパイルし、cgiファイルとして

exe ファイルとしてみたらどうなるでしょう?
(つまり、test.exe というファイル名にしてみる)


naomi nishibon2001@mail.goo.ne.jp 2001/11/19 15:09

はじめまして。
当方、超初心者で申し訳ありませんが
以下の内容をコンパイルし、cgiファイルとして
ローカルでtestしているのですが

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:

Unrecognized character \002 ignored at C:\My Documents\www\hiroyasu\public_html\test.cgi line 1.

というようなエラーメッセージが出てきてしまい、うまく動作しません。
どのような原因が考えられるでしょうか?
全文検索など調べてみたのですが、よく分かりませんでしたので
ご質問させて頂きました。
ちなみにhttpdはversion1.34を利用しています。
よろしくお願い致します。

#include <stdio.h> 

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

printf("<HTML>\n");
printf("<HEAD>\n");
printf("<TITLE>cgi test02-answer</TITLE>\n");
printf("</HEAD>\n");
printf("<BODY>\n");

printf("Hello,World\n");

printf("</BODY>\n");
printf("</HTML>\n");
return 0;
}