![]() |
Indy Webserver mit PHP und CGI
Hallo,
hier im Forum bin ich auf die kühne Behauptung in Bezug auf die Indy Webserver-Komponente gestoßen: "Ja, PHP, CGI und Co. kann man ja fast wie eine Consolenanwendung aufrufen, bzw. wie eine DLL einbinden und so aufrufen." (Quelle: ![]() Da ich schon lange nach einer Möglichkeit suche, einen lokalen "Webserver" mit Delphi zu bauen, mit dem Anwender ihre künftige Webseite (incl. HTML-, PHP- und CGI-Code) lokal testen können, interessiert mich die Einbindung von PHP und CGI in den Indy-Webserver enorm. Gibt's dafür eine Beispiellösung? Danke im Voraus. |
AW: Indy Webserver mit PHP und CGI
Zitat:
|
AW: Indy Webserver mit PHP und CGI
PHP und CGI sind einfache Anwendungen (EXE), die von der Standardeinggabe lesen und auf der Standardausgabe ausgeben.
Daher kann man den PHP Interpreter (PHP.EXE) oder eine CGI Anwendung im Indy OnCommandGet aufrufen und dann aus Standardausgabe den HTML Code auslesen und an den Client zurücksenden. Als wichtigsten Baustein braucht man ein Stück Delphi Code, mit dem man einen String (oder Stream) an einen Prozess als Standardeingabe übergeben und seine AUsgaben zurück in einen String (oder Stream) einliest. p.s. Codebeispiele habe ich hier gefunden: ![]() ![]() p.p.s.: PHP von einem eigenen Webserver aus aufzurufen ist nicht besonders kompliziert. Der Ablauf wird auf Stackoverflow hier beschrieben: ![]() Man definiert einige Umgebungsvariablen, und ruft dann den PHP Interpreter auf. Bei einem GET übergibt man PHP einfach nur den Skriptdateinamen als Umgebungsparameter:
Code:
Bei einem POST schreibt man beim Aufruf des Interpreters den PPOST Body in die Standardeingabe.
setenv GATEWAY_INTERFACE="CGI/1.1"
setenv SCRIPT_FILENAME=/path/to/script.php setenv QUERY_STRING="id=123&name=title&parm=333" setenv REQUEST_METHOD="GET" ... exec /usr/bin/php-cgi In beiden Fällen erhält man den HTML Response Code von der Standardausgabe des PHP Prozesses. |
AW: Indy Webserver mit PHP und CGI
Zitat:
|
AW: Indy Webserver mit PHP und CGI
WAMP - Windows - Apache - PHP
LAMP -> Linux - Apache - PHP MAMP -> Mac - Apache - PHP XAMPP -> OS egal - Apache - PHP - Perl ups- überall mySQL vergessen.. Grüße Klaus |
AW: Indy Webserver mit PHP und CGI
Zitat:
Allerdings gebe ich gerne zu dass es auch einfacher geht - ein vorgeschalteter Apache beantortet die PHP Anfragen, ausser solche, für die es eine Weiterleitungsregel an den im internen Netz stehenden Delphi Webserver gibt. Der kann dann anstelle des PHP Interpreters diese Requests übernehmen. |
AW: Indy Webserver mit PHP und CGI
Da viele Anwender zwar eine eigene Website haben, sich aber nicht mit HTML, PHP u.dgl. beschäftigen wollen, läuft das Projekt letztendlich darauf hinaus, ein "Desktop CMS" zu entwickeln (Beispiel: Zeta Producer). Der lokale Webserver soll für die Anwender völlig unsichtbar bleiben und - wenn möglich - auch nur innerhalb meiner Anwendung laufen. Auch der Browser ("Vorschau") soll als solcher nicht zu erkennen sein. Wenn eine Webseite fertig ist, werden die zugehörigen Dateien hochgeladen - und das war's. Die PHP-Einbindung des lokalen Webservers brauche ich, um den Code zur Organisation der Inhalte nicht zweimal schreiben zu müssen - lokal in Object Pascal und remote als PHP.
|
AW: Indy Webserver mit PHP und CGI
Zitat:
|
AW: Indy Webserver mit PHP und CGI
Serhij Perevoznik hat 2006 für Indy 8 und 9 den IdRunner entwickelt, mit dem man auf dem Indy Webserver PHP als CGI ausführen kann. Der Autor hat nahezu alle Links dazu gekappt, nur auf Torry ist es noch zu finden:
![]() Jetzt muss nur noch der Code an Indy 10 angepasst werden ... |
AW: Indy Webserver mit PHP und CGI
Zitat:
Dann entwickel lieber ein Desktop-CMS mit WAMP, statt das Rad neu erfinden zu wollen, Jahre an Arbeit reinzustecken, um dann am Ende festzustellen, dass du vlt doch besser bestehende Lösungen genutzt hättest (Stichwort Wartung, Erweiterung, Versions- / Paradigmenwechsel, etc). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 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 by Thomas Breitkreuz