« PowerPDFとByteType | トップページ | FreePascal 2.4.0 »

2009/12/19

LazarusでCGI

 

 LazarusでCGIを作成しようと思い、まずはHelloWorldを作成してみました。
 以下のコードを書いて、デバッガでテストをした後、Apache2の動いているサーバーへコピーし、ブラウザからアクセスすると、もちろんちゃんと表示されました。

program cgi1;

{$mode objfpc}{$H+}

uses
  Classes, sysutils;

begin
  try
    writeln('Content-Type: text/plain');
    writeln('');
    writeln('HelloWorld');
    flush(StdOut);
    Exit;
  except
    on E: Exception do
    begin
      writeln(e.Message);
    end;
  end;
end.

 いちいちサーバーにコピーするのが面倒になり、開発マシンにAnHttpdを入れてCGIを実行したところ、「ハンドルされていないWin32の例外が発生しました。」となってAnHttpdのプロセスが異常終了してしまいました。
 プログラムが悪いのか、環境が悪いのかわからず試行錯誤を繰り返し、約半日が過ぎ去ったとき、ふと、ファイル名を変えてみると、なんと動きました。

cgi.exe -> OK
cgi1.exe -> NG
cgi01.exe -> OK
cgi10.exe -> OK
cgi2.exe -> NG

test.exe -> NG
test1.exe -> OK
test01.exe -> OK
test10.exe -> OK
test2.exe -> OK

testcgi.exe -> OK
testcgi01.exe -> OK
tstcgi01.exe -> NG

 他にもいろいろファイル名を変えて試しましたが、規則性はよくわかりません。Delphiでも試そうかと思いましたが、疲れたのでこの辺でやめておます。(ちなみに、AnHttpdに同梱されていたtest.batも同様に異常終了するので...)

|

« PowerPDFとByteType | トップページ | FreePascal 2.4.0 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36845/47058826

この記事へのトラックバック一覧です: LazarusでCGI:

« PowerPDFとByteType | トップページ | FreePascal 2.4.0 »