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