Johanna: C++ und PHP sowie Apache?

Hallo,

wie kann ich php skript so Ausführen lassen wie Apache? Sodass $_GET $_POST und so gültige Werte beeinhalten?

Also ich habe einen Webserver in C++ und der soll PHP-Skript aufrufen könen. Ich weiß nur nicht wie das geht. Mit Google habe ich bisher nichts brauchbares gefunden.

Johanna

  1. Hallo Johanna...johnny...werauchimmer,

    wie kann ich php skript so Ausführen lassen wie Apache? Sodass $_GET $_POST und so gültige Werte beeinhalten?

    Out of the Box hast Du 2 Optionen, die funktionieren, ohne, dass Du PHP selbst modifizieren müsstest:

    Wenn Du als Webserver die CGI-Spezifikation implementierst und PHP als CGI einbindest, dann dürfte das die einfachste Methode dafür sein.

    Zudem gibt's auch noch FastCGI, wenn's etwas komplizierter, dafür performanter sein darf (PHP unterstützt das auch).

    Und dann besteht als letzte Option immer noch die Möglichkeit, dass Du eine eigene Schnittstelle in Deinem Webserver entwickelst und dann zu PHP eine neue SAPI hinzufügst, die diese Schnittstelle nutzen kann. Davon würde ich allerdings eher abraten. ;-)

    Viele Grüße,
    Christian

    1. Wenn Du als Webserver die CGI-Spezifikation implementierst und PHP als CGI einbindest, dann dürfte das die einfachste Methode dafür sein.

      Zudem gibt's auch noch FastCGI, wenn's etwas komplizierter, dafür performanter sein darf (PHP unterstützt das auch).

      Kannst du mir das genauer erklären wie das Funktioniert, oder mir Links nennen wo das gemacht wird? Wäre echt nett.

      Johanna

      1. Ich grüsse den Cosmos,

        Kannst du mir das genauer erklären wie das Funktioniert, oder mir Links nennen wo das gemacht wird? Wäre echt nett.

        http://www.apache.org
        Der Quelltext des Apachen ist dort frei verfügbar.

        Möge das "Self" mit euch sein

        --
        Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
        1. Hallo Manuel,

          Kannst du mir das genauer erklären wie das Funktioniert, oder mir Links nennen wo das gemacht wird? Wäre echt nett.

          http://www.apache.org
          Der Quelltext des Apachen ist dort frei verfügbar.

          Sorry, aber die Antwort ist absolut nicht hilfreich. Im Apache sind deutlich mehr Dinge implementiert, als die CGI-Spezifikation selbst, mit denen man sich aber erst einmal auseinandersetzen muss, um den Code zu verstehen.

          Viele Grüße,
          Christian

      2. Hallo,

        Wenn Du als Webserver die CGI-Spezifikation implementierst und PHP als CGI einbindest, dann dürfte das die einfachste Methode dafür sein.

        Zudem gibt's auch noch FastCGI, wenn's etwas komplizierter, dafür performanter sein darf (PHP unterstützt das auch).

        Kannst du mir das genauer erklären wie das Funktioniert, oder mir Links nennen wo das gemacht wird? Wäre echt nett.

        Ok, ich beschränke mich mal auf CGI:

        Bei CGI ist es so, dass der Webserver-Prozess - sobald er feststellt, dass eine Seite von einem CGI-Programm verarbeitet werden soll - dieses Programm über das Betriebsystem startet, dabei allerdings einige Dinge beachtet.

        1. Bestimmte Umgebungsvariablen müssen gesetzt werden, damit das Programm Informationen über den HTTP-Request mitbekommt. Zu den Umgebungsvariablen gehören zum Beispiel QUERY_STRING oder REQUEST_METHOD.

        2. Die Standardeingabe des Programms muss die übermittelten POST-Daten bereitstellen.

        3. Die Standardausgabe des Programms muss an den Browser zurückgeschickt werden, NACHDEM sie weiterverarbeitet wurde. Das Programm wird - wenn es korrekt funktioniert - erst einmal ein paar HTTP-Header an die eigene Standardausgabe schicken, danach eine Leerzeile und danach den eigentlichen Inhalt. Der Webserver muss dann bestimmte Header (namentlich Content-Type, Location und Status) interpretieren nach der CGI-Spezifikation, alle anderen Header 1:1 an den Client durchreichen und eventuell fehlende Header, die nach HTTP vorgeschrieben sind, ergänzen (sowie korrekt auf Content-Type, Location und Status reagieren und dort eventuell Dinge ergänzen). Der Inhalt muss direkt durchgereicht werden.

        Zum Starten des Programms sei noch zu sagen, dass z.B. im Falle von PHP das php-Programm selbst aufgerufen werden muss und als erster Kommandozeilenparameter muss der Pfad zum Script übergeben werden. Zudem hat es sich so eingebürgert, dass der Webserver in das Verzeichnis wechselt, in dem das auzuführende Programm oder Script liegt (auch wenn das nach kurzem Überfliegen der CGI-Spezifikation da so nicht drinsteht).

        Welche Umgebungsvariablen gesetzt werden MÜSSEN nach der CGI-Spezifikation sowie weiter Details zur Standardein- und Ausgabe kannst Du hier nachlesen: http://hoohoo.ncsa.uiuc.edu/cgi/interface.html

        Wenn man etwas Ahnung von HTTP und Systemprogrammierung (auf dem jeweiligen Betriebsystem) hat, sollte CGI nicht zu schwer umzusetzen sein. Wenn man dies nicht hat, sollte man sich dieses Wissen vorher aneignen.

        Viele Grüße,
        Christian

  2. Ich grüsse den Cosmos,

    Also ich habe einen Webserver in C++ und der soll PHP-Skript aufrufen könen. Ich weiß nur nicht wie das geht. Mit Google habe ich bisher nichts brauchbares gefunden.

    Dein Server schickt dein Script durch den Interpreter und gibt das aus, was er zurückgeliefert bekommt.

    Möge das "Self" mit euch sein

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)