我写了一个web service,是APACHE2.2中的SO,但是加载不进去 ( 积分: 100 )

  • 主题发起人 CADVector
  • 开始时间
C

CADVector

Unregistered / Unconfirmed
GUEST, unregistred user!
源文件:
library Web;
uses
WebBroker,
ApacheTwoApp,
MyWeb in 'MyWeb.pas' {WebModule1: TWebModule};
{$R *.res}
{$E so} //change binary file extension from .dll to .so
{$LIBPREFIX 'mod_'}
exports
apache_module name 'Web_module';
begin
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
然后在httpd.conf中添加
LoadModule Web_module modules/mod_Web.so
<Location /delphi>
SetHandler mod_web-handler
</Location>
重新启动APACHE服务,启动失败,提示无法加载mod_Web.so,不知道为什么
 
看我的笔记
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13128
 
在ap_mmn.h中如下
#define MODULE_MAGIC_COOKIE 0x41503232UL /* &quot;AP22&quot;
*/
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 20051115
#endif
#define MODULE_MAGIC_NUMBER_MINOR 5
因此我在HTTPD2中修改了
MODULE_MAGIC_COOKIE = $41503232;
(* &quot;AP20&quot;
*)
{$EXTERNALSYM MODULE_MAGIC_COOKIE}
MODULE_MAGIC_NUMBER_MAJOR = 20051115;
{$EXTERNALSYM MODULE_MAGIC_NUMBER_MAJOR}
MODULE_MAGIC_NUMBER_MINOR = 5;
(* 0...n *)
这样接口应该对应了吧,
然后我将HTTPD2加入到工程中重新编译,工程文件如下
library Test;
uses
WebBroker,
HTTPD2,
ApacheTwoApp,
TestWeb in 'TestWeb.pas' {WebModule1: TWebModule},
FirstWebImpl in 'FirstWebImpl.pas',
FirstWebIntf in 'FirstWebIntf.pas';
{$R *.res}
{$E so} //change binary file extension from .dll to .so
exports
apache_module name 'Test_module';
begin
Application.Initialize;
ModuleName := 'Test_module';
Handler := 'test-handler';
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.

修改HTTPD.CONF
LoadModule Test_module modules/Test.so
<Location /test>
SetHandler test-handler
</Location>
这样修改后还是不行啊,服务起不来
 
问题已经解决,其实D7只支持Apache2.0.39这个版本以及前面的版本,以后的版本需要修改HTTPD2.PAS这个文件了.
 
接受答案了.
 
顶部