为何delphi7不支持apache2.0.43版???,应该如何解决(100分)

  • 主题发起人 主题发起人 52free
  • 开始时间 开始时间
5

52free

Unregistered / Unconfirmed
GUEST, unregistred user!
写了个测试apache share module的小测试程序
可是apache不能正常启动,有如下错误提示
The Apache service named reported the following error:
>>> Apache.exe: module "test_module" is not compatible with this version of Apache (found 20020612, need 20020903).
 
换成apache1.3.28就可以用了
不知delphi在搞什么,唉:(
 
http://www.51delphi.com/wz/11.html
看看吧
 
我这里www.51delphi.com好象上不了的,
 
to oiget:
转贴给你:
(http://www.51delphi.com/wz/11.html)
使Delphi 6.0 支持 Apache 2.0
我们都知道,Bolrand 从Delphi 6.0 以后开始支持Apache web 服务器,而Apache 以其出色的性能及安全性是很多人青睐。Apache 现在最新的版本为2.0.43。虽然Borland 今年新出的Delphi 7 开始支持Apache 2.0 版本,但是Delphi 6 只支持Apache 1.x 版本,而Delphi 7 发行的版本也只支持到Apache 2.0.39 版,对Apache 2.0.40 以后的版本无法支持,本文给出了让Delphi 6和Delphi7 支持最新的Apache 2.0.43 的方法。
首先让我们对Delphi 7 进行改造,Delphi 7.0 不支持 Apache 2.0.40 以后的版本的原因是Apache 2.0.40 以后版本修改了接口文件,因此要对Delphi 7.0 对应的接口文件进行修改,
具体的修改文件为: HTTPD2.pas,修改内容为:
打开 HTTPD2.pas (在c:/ Program Files/borland/delphi7/source/ Internet下)
修改一下常数:
· MODULE_MAGIC_NUMBER_MAJOR = 20020628;
{ Apache 2.0.40 }
· 如果是Apache 2.0.43 的话,应该修改为
· MODULE_MAGIC_NUMBER_MAJOR = 20020903;
{ Apache 2.0.43 } MODULE_MAGIC_NUMBER_MINOR = 0;
(* 0...n *)
在结构 conn_rec 的定义里加入以下:
· ap_conn_keepalive_e = (AP_CONN_UNKNOWN, AP_CONN_CLOSE, AP_CONN_KEEPALIVE);
在结构 conn_rec 的定义里替换:
· (** Are we still talking? *)
· flags: Cardinal;
· { The following are in the flags bitset:
· unsigned aborted:1;
·
· (** Are we going to keep the connection alive for another request?
· * -1 fatal error, 0 undecided, 1 yes *)
· signed int keepalive:2;
·
· (** have wedo
nedo
uble-reverse DNS? -1 yes/failure, 0 not yet,
· * 1 yes/success *)
· signed intdo
uble_reverse:2;
· }
为:
(** Are we still talking? *)
flags1: Cardinal;
{ The following are in the flags bitset:
unsigned aborted:1;
}

(** Are we going to keep the connection alive for another request?
* @see ap_conn_keepalive_e *)
keepalive: ap_conn_keepalive_e;

flags2: Cardinal;
{ The following are in the flags bitset:
(** have wedo
nedo
uble-reverse DNS? -1 yes/failure, 0 not yet,
* 1 yes/success *)
signed intdo
uble_reverse:2;
}
好了,保存这个文件,然后拷入c:/ Program Files/borland/delphi7/lib 目录。
重新编译你的程序,加入相应的Apache 的配置(具体配置方法请参照我以前的文章),启动Apache,打开浏览器。 ok! 没问题了吧!好。
现在我们看看怎么在Delphi 6 里面实现Apache 2.0 的支持,实际上很简单,只要把Delphi 7 里面相应的文件拷入 Delphi 6 的LIB 目录就可以了,具体为以下三个文件: ApacheTwoHTTP.pas, ApacheTwoApp.pas, HTTPD2.pas,然后打开你的现有的Apache 1.x 的程序,修改project 上面的 use 部分,把 Apacheapp改为Apachetwoapp,再把下面的ContentType 改为handler,好了,所有手术完成,现在你编译出来的就是支持Apache 2.0.43 的动态共享模块了。
注意:以上的修改为非官方修改,不能保证不出问题,请大家慎重处理。
为了方便没有Delphi 7.0 的网友,我把修改过的三个文件放在网站上了,大家可以下载:http://www.51delphi.com/file/apache2d.rar。

谢谢大家的阅读!
 
to zyxxyz: 不错,学习!!
 
谢谢,zyxxyz
我试了几个版本的apache,还是不行,不懂为何,
 
to 52free,
您好。
我用apache1.3.28也试了,不行的?
可以把您的例子(apache+httpd.conf+dll的原码)发份给俺么?
code_pas@yahoo.com.cn
谢谢,
 
以前也碰到过,这里是解决的方法
http://www.drbob42.com/delphi7/apache2040.htm
 
哦这个问题我已经解决了
请看我的另一贴:)
谢谢大家的参与
 

Similar threads

I
回复
0
查看
3K
import
I
I
回复
0
查看
3K
import
I
I
回复
0
查看
1K
import
I
I
回复
0
查看
2K
import
I
I
回复
0
查看
989
import
I
后退
顶部