AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi XE2 und Apache - mod_isapi
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE2 und Apache - mod_isapi

Ein Thema von christophspaeth · begonnen am 21. Mai 2012 · letzter Beitrag vom 6. Jun 2012
Antwort Antwort
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
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Delphi XE2 und Apache - mod_isapi

  Alt 21. Mai 2012, 15:00
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:
<Directory ..\cgi-bin>
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
Mit "localhost/cgi-bin/test.dll" kommt dann im Firefox mein Standardtext.
  Mit Zitat antworten Zitat
christophspaeth

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

AW: Delphi XE2 und Apache - mod_isapi

  Alt 21. Mai 2012, 15:37
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 https://issues.apache.org/bugzilla/s...g.cgi?id=40067 gestolpert - nach Ansicht mit Wireshark ist auch genau Error 500 und dann das zu erwartende Ergebnis zu sehen. Warum Firefox dann ein "Fehler: Datei nicht gefunden" daraus macht muss man aber glaube ich nicht verstehen...

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]
Christoph Späth

Geändert von christophspaeth (22. Mai 2012 um 10:00 Uhr) Grund: Neue Erkenntnisse eingefügt
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Delphi XE2 und Apache - mod_isapi

  Alt 21. Mai 2012, 17:44
Freut mich, dass ich helfen (bzw. den Anstoß zur Selbsthilfe liefern) konnte
  Mit Zitat antworten Zitat
christophspaeth

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

AW: Delphi XE2 und Apache - mod_isapi

  Alt 6. Jun 2012, 14:51
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:
RewriteEngine on
RewriteRule ^/MeinModul/(.*) /cgi-bin/myModuleAsISAPI.dll/$1 [NC,L,PT]
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.
Soll die alte URL Case-Sensitiv sein, einfach das NC weglassen.

Gruß Chris
Christoph Späth
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz