Einzelnen Beitrag anzeigen

christophspaeth

Registriert seit: 7. Mär 2008
73 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Delphi XE2 und Apache - mod_isapi

  Alt 21. Mai 2012, 14:38
Hallo,

hat zwar nur am Rande mit Delphi zu tun, ich hoffe, dass ich trotzdem im richtigen Forum bin:
Irgendwo zwischen Delphi 2006 und XE2 wurde dann anscheinend auch die inoffizielle Unterstützung für Apache-Module aufgekündigt - jedenfalls finde ich die entsprechenden Units / DCUs nicht. Sollte da jemand ein Projekt kennen, das Native-Apache-Unterstützung mit XE2 ermöglicht, wär das natürlich recht praktisch...

Ich hätte jetzt aber den Ansatz mit mod_isapi gewählt, komme da aber nicht klar, die Beschreibung bei Apache http://httpd.apache.org/docs/2.0/mod/mod_isapi.html hilft mir auch nicht weiter.

Ich habe zu Testzwecken mal ein neues WebBroker-Projekt als isapi-dll erstellt und der Standard-Action noch ein SendResponse spendiert:
Delphi-Quellcode:
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := '<html><heading/><body>Web Server Application</body></html>';
  Response.SendResponse();
end;
Die dll habe ich dann nach %Apache-Dir%/modules/isapi kopiert und folgenden Block in die httpd.conf eingefügt:
Code:
Alias /test/ "C:/Apache2.0/modules/isapi/"
<Directory "C:/Apache2.0/modules/isapi/">
    AddHandler isapi-handler .dll
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
Das Laden des Moduls (LoadModule isapi_module modules/mod_isapi.so) ist ebenfalls vorhanden und die Apache-Version ist 2.0.59.

Soweit ich das verstanden habe, müsste jetzt (nach Apache-neustart) unter http://localhost/test/Project2.dll obige Funktion erreichbar sein, ich bekomme aber vom Firefox die Fehlermeldung "Die Dateien unter http://localhost/test/Project2.dll konnten nicht gefunden werden."
In der error.log vom Apache finde ich überhaupt nichts zu der Anfrage und in der Access.log sehe ich nichtmal einen Statuscode:
Code:
127.0.0.1 - - [21/May/2012:14:48:24 +0200] "GET /test/Project2.dll HTTP/1.1" - 58
127.0.0.1 - - [21/May/2012:14:48:39 +0200] "GET /test/Project2.dll HTTP/1.1" - -
127.0.0.1 - - [21/May/2012:14:50:07 +0200] "GET /test/Project2.dll/ HTTP/1.1" - -
Wahrscheinlich steh ich grad nur mächtig auf dem Schlauch, aber ich hab nach gut zwei Stunden ausprobieren und Recherche keine Idee wo(nach) ich noch suchen soll.

Wenn das dann hoffentlich läuft müsste ich noch den Dateinamen in der URL loswerden - das wird vermutlich mit Rewrite am besten gehen?

Grüße
Chris
Christoph Späth
  Mit Zitat antworten Zitat