![]() |
Delphi XE2 und Apache - mod_isapi
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 ![]() Ich habe zu Testzwecken mal ein neues WebBroker-Projekt als isapi-dll erstellt und der Standard-Action noch ein SendResponse spendiert:
Delphi-Quellcode:
Die dll habe ich dann nach %Apache-Dir%/modules/isapi kopiert und folgenden Block in die httpd.conf eingefügt:
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;
Code:
Das Laden des Moduls (LoadModule isapi_module modules/mod_isapi.so) ist ebenfalls vorhanden und die Apache-Version ist 2.0.59.
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> Soweit ich das verstanden habe, müsste jetzt (nach Apache-neustart) unter ![]() ![]() In der error.log vom Apache finde ich überhaupt nichts zu der Anfrage und in der Access.log sehe ich nichtmal einen Statuscode:
Code:
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.
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" - - 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 |
AW: Delphi XE2 und Apache - mod_isapi
Hi :)
Mit Apache + DLLs hab ich mich in letzter Zeit häufiger rumschlagen dürfen. Ganz grob mal skizziert, wie's bei mir funktioniert: DLL nach apache\cgi-bin\ kopieren. In der httpd.conf dann folgende beide Blöcke:
Code:
<IfModule isapi_module>
AddHandler isapi-handler .dll </IfModule>
Code:
Mit "localhost/cgi-bin/test.dll" kommt dann im Firefox mein Standardtext.
<Directory ..\cgi-bin>
AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> |
AW: Delphi XE2 und Apache - mod_isapi
Hallo Ensaron,
danke für deine Antwort. Im Prinzip hatte ich es ja ähnlich versucht. Habe jetzt mal schnell zu Testzwecken einen Apache 2.2.22 installiert und musste nur das AddHandler hinzufügen und bei den Options im Directory-Eintrag für cgi-bin None gegen ExecCGI tauschen - sprich: Hier läuft's. Jetzt muss ich nur schauen, was ich an meinem 2.0er verkonfiguriert/verstellt hab bzw. ein Update in Erwägung ziehen. Gruß Chris [Edit: Anscheinend bin ich über diesen Bug im Apache ![]() Auf jeden Fall nochmal danke für dein indirektes "müsste so eigentlich passen" - sonst hätte ich vermutlich keine andere Version ausprobiert.] [Edit2: Falls jemand anders über das gleich Problem stolpert: Auch mit Apache 2.0.64 tritt das Problem bei mir auf, also muss man wohl für isapi zwingend auf Apache 2.2 wechseln] |
AW: Delphi XE2 und Apache - mod_isapi
Freut mich, dass ich helfen (bzw. den Anstoß zur Selbsthilfe liefern) konnte :)
|
AW: Delphi XE2 und Apache - mod_isapi
Hallo,
bin jetzt auch dazu gekommen, mich mit der Rewrite-Rule zu beschäftigen, damit ich das Modul unter dem altem Pfad des Apache Loadable Modules erreichen kann. Ist zwar nur eine / zwei Zeilen, aber irgendwie gehört das ja zu dem Thema:
Code:
Nachdem ich erstmal recht lang am Problem "vorbeigesucht" habe: Das PT in den Flags ist notwendig, dass das ScriptAlias greift und folglich das ISAP-Modul überhaupt gefunden wird.
RewriteEngine on
RewriteRule ^/MeinModul/(.*) /cgi-bin/myModuleAsISAPI.dll/$1 [NC,L,PT] Soll die alte URL Case-Sensitiv sein, einfach das NC weglassen. Gruß Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz