[fpc-pascal] Apache module with fpc 2.4.x on Apache 2.2.x (64bit)
Takashi Ishikawa
ishikawa at simple-way.co.jp
Thu May 26 23:51:07 CEST 2011
Thanks for telling me a ticket.
In fact, I had already read the code of 'fpapache' unit.
According to the patch of ticket, registration of the hook seems to have
been fixed.
By the way, in the test code does not use TCustomApacheApplication. The
code which register hook is also written. (And my program is not using
fpWeb)
The error that exists in the ticket is not displayed. Seemingly, start of
httpd seems to success. However, the process terminate immediately.
Is there another possible cause?
Takashi
On Fri, 27 May 2011 05:55:14 +0900, ABorka <fpc-devel at aborka.com> wrote:
> On 5/26/2011 13:36, Takashi Ishikawa wrote:
>> Hello, all
>>
>> I'm writing apache module with fpc.
>>
>> When I compile my program on fpc 2.4.4, Apache terminate immediately.
>> But on fpc 2.2.4, Apache and my module will work fine.
>>
>> Code is compiled with no problem. Apache can load module. But the
>> running has problem.
>>
>> Is there anyone who running a module compiled with fpc 2.4.x on Apache?
>>
>>
>> I tested some envirment:
>> - OS: CentOS 5.5 / Fedora 12
>> - Apache: 2.2.3 / 2.2.17
>> - Arch: x86_64
>> - FPC: 2.2.4 / 2.4.2 / 2.4.4
>>
>>
>> Test code:
>> -----
>> library lib_mod_simple;
>>
>> {$ifdef fpc}
>> {$mode objfpc}{$H+}
>> {$endif}
>>
>> uses SysUtils, httpd, apr;
>>
>> var
>> mod_simple: module; public name 'mod_simple';
>>
>> exports
>> mod_simple name 'mod_simple';
>>
>> function DefaultHandler(r: Prequest_rec): Integer; cdecl;
>> begin
>> Result := DECLINED;
>> end;
>>
>> procedure RegisterHooks(p: Papr_pool_t); cdecl;
>> begin
>> ap_hook_handler(@DefaultHandler, nil, nil, APR_HOOK_MIDDLE);
>> end;
>>
>> begin
>> FillChar(mod_simple, SizeOf(mod_simple), 0);
>> STANDARD20_MODULE_STUFF(mod_simple);
>> with mod_simple do
>> begin
>> name := 'mod_simple.so';
>> register_hooks := @RegisterHooks;
>> end;
>> end.
>> -----
>>
>>
>> Compilation options:
>> -----
>> fpc -Xs -XX -fPIC -dFPCAPACHE_2_2 -omod_simple.so mod_simple.pas
>> -----
>>
>>
>> LoadModule in httpd.conf:
>> -----
>> LoadModule mod_simple modules/mod_simple.so
>> -----
>>
>>
>> Test#1 with CentOS 5.5, Apache 2.2.3, FPC 2.2.4
>> -----
>> # gdb httpd
>> (gdb) r -X
>>
>> Starting program: /usr/sbin/httpd -X
>> [Thread debugging using libthread_db enabled]
>> Detaching after fork from child process 28066.
>> Detaching after fork from child process 28080.
>>
>> -----
>>
>>
>> Test#2 with CentOS 5.5, Apache 2.2.3, FPC 2.4.4
>> -----
>> # gdb httpd
>> (gdb) r -X
>>
>> Starting program: /usr/sbin/httpd -X
>> [Thread debugging using libthread_db enabled]
>> Detaching after fork from child process 28119.
>>
>> Program exited normally.
>>
>> (gdb)
>> -----
>>
>> Test with CentOS 5.5, Apache 2.2.3, FPC 2.4.2
>> Test with CentOS 5.5, Apache 2.2.3, FPC 2.4.4
>> Test with Fedora 12, Apache 2.2.17, FPC 2.4.4
>> same as Test#2
>>
>>
>> In test#1, it seemed to be success. When I access the webserver with
>> browser, apache respond normal page.
>>
>> In test#2, apache shows no error. But process terminate. And when I
>> accessed the webserver, apache didn't respond.
>>
>>
>> It is possible to develop by using FPC 2.2.4. However, the future, I
>> want to compile with a newer version of FPC. Is there any idea to
>> running module with FPC 2.4.x?
>>
>> Thanks,
>> Takashi
>
> There were problems with apache modules that were fixed in the latest
> FPC SVN (bug report 19184).
> If you do not want to use the SVN versions of FPC/Lazarus, you can just
> download the latest packages/fcl-web/src/base/ files from SVN into your
> project directory and recompile your project.
>
> Also, make sure you compile with the httpd22 directory and that
> FPC/Lazarus is not accidentally uses httpd13 or httpd20 . The best if
> you just delete these two directories from your fpc units directory.
>
> AB
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list