我在Delphi 7中创建了一个Apache 2.2.21模块(DSO)并更改了httpd.conf文件,但是当我重新启动Apache时,它会“无法加载到服务器中。无法找到指定的模块”错误。我仔细检查了我的模块(.so文件)是否在apache modules文件夹中。这是我的电脑的详细信息:
我还根据leonardo的博客转换了我的httpd2.pas副本,用于Delphi 7的Apache 2.2.x版本兼容性更改,但仍然遇到同样的问题。
以下是代码和配置文件:
可在此处找到完整文件(https://github.com/stijnsanders/xxm/blob/master/Delphi/apache/HTTPD2.pas)
LoadModule myapachews_module modules/mod_myapachews.so
<Location /rktest>
SetHandler mod_myapachews-handler
</Location>
library myapachews;
uses
WebBroker,
ApacheTwoApp,
mMain in 'mMain.pas' {WebModule1: TWebModule};
{$R *.res}
{$E so}
{$LIBPREFIX 'mod_'}
exports
apache_module name 'myapachews_module';
begin
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
unit mMain;
interface
uses
SysUtils, Classes, HTTPApp;
type
TWebModule1 = class(TWebModule)
procedure WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModule1: TWebModule1;
implementation
{$R *.dfm}
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.Content := '<H1>Hello World</H1>';
end;
end.
object WebModule1: TWebModule1
OldCreateOrder = False
Actions = <
item
Name = 'WebActionItem1'
OnAction = WebModule1WebActionItem1Action
end>
Left = 343
Top = 116
Height = 292
Width = 374
end
任何帮助或信息都将受到高度赞赏。
先谢谢, Ravinder
答案 0 :(得分:0)
虽然我很荣幸能够链接到我的存储库,但我很遗憾你还没看过xxm项目,因为它正好服务于你试图实现的目的。它还有一个Apache HTTPD处理程序,可以为您加载xxm项目(并使它们可以通过IIS,InternetExplorer&#iinternterProtocol或本地xxmHttp进行调试)。
回答你的问题。在Windows上,您可以继续使用.dll
文件扩展名,因为Delphi 7编译器不提供ELF二进制文件,所以不需要将其更改为.so
这是不正确的。请记住使用正斜杠,或将反斜杠加倍,因为这些服务作为转义字符。
同时检查文件是否已正确写入Apache HTTPD的modules
目录。或者,您可以使用LoadModule
指令在httpd.conf中使用绝对路径。