Wie erkennt man in PHP, ob es auf Apache, Nginx oder einem anderen Webserver läuft? [geschlossen]

12

Zuerst kenne ich diese Variable: _SERVER["SERVER_SOFTWARE"]

In einer meiner Anwendungen möchte ich anhand eines PHP-Skripts überprüfen, auf welchem ​​Webserver es ausgeführt wird. Grundsätzlich wird es ein WordPress-Plugin sein, das Bloggern dabei hilft, einige Konfigurationen vorzunehmen.

Ich habe einen separaten Prozess für Apache & Nginx erstellt und darüber nachgedacht, Code als zwei verschiedene WordPress-Plugins zu veröffentlichen.

Dann wurde ich neugierig, ob es in PHP eine FULLPROOF-Methode gibt, um Webserver fehlerfrei zu erkennen.

Bitte beachten Sie alle Fälle: Apache, Nginx, Apache + Nginx, PHP als Apache-Modul, PHP mit FastCGI, PHP-FPM, LightTPD, IIS usw.

Außerdem ist es für meine Anwendung von entscheidender Bedeutung, Combos und Proxies zu erkennen.

Vielen Dank,

-Rahul

rahul286
quelle

Antworten:

10

Die kurze Antwort lautet, dass es unmöglich ist, den verwendeten Webserver deterministisch zu bestimmen. Der nächstgelegene Wert ist $ _SERVER ["SERVER_SOFTWARE"].

Es ist möglich, eine ziemlich gute Vorstellung davon zu bekommen, welche Software unter einer bestimmten URL ausgeführt wird. Dies ist jedoch sehr kompliziert - und zeigt nur an, was die HTTP-Verbindung beendet - es kann sich um einen Proxy handeln.

Was Sie in phpinfo () sehen, zeigt den Webserver für [fast] cgi nicht an und es zeigt nur, was der Administrator auswählt, um es auf anderen Systemen verfügbar zu machen.

Außerdem ist es für meine Anwendung von entscheidender Bedeutung, Combos und Proxies zu erkennen.

Ich habe keine Ahnung, was Sie mit "Combos" meinen. Für Proxies gibt es auch keine Möglichkeit, das zu sagen.

Wenn Sie erklärt haben, warum Sie diese Informationen benötigen und welchen Wert sie für Sie haben, können wir möglicherweise fundierter raten, welche Antwort Ihren Anforderungen entspricht.

C.

symcbean
quelle
Mit cambo meine ich einfach: Einige Benutzer wählen Nginx als Front-End-Webserver und verwenden dann Apache, um PHP auszuführen. Ein Fall ist, dass sie cpanel und nginx zusammen ausführen möchten. In meiner Anwendung möchte ich in einem Abschnitt die Benutzer für einige komplexe, auf dem Webserver basierende Umschreiberegeln anleiten. Welchen Webserver erkennt mein PHP-Skript in Apache + Nginx? I
rahul286
0

Jemand auf der PHP Manual-Seite hat einen Weg gepostet , umphpinfo() Variablen in ein Array zu bekommen. Dort gibt es viele Informationen, aber auch, Systemwo PHP läuft. Vielleicht können Sie das verwenden. Schauen Sie sich die Kommentare an.

Auch das Erkennen von Proxys ist nicht so einfach. Sie können HTTP-Header (wie z. B. Via) verwenden, aber es gibt viele Möglichkeiten, wie etwas schief gehen kann.

Core-Dump
quelle
danke für deine antwort und hilfe. Ich weiß, dass über Header nicht vertraut werden kann, und das ist der Grund, warum ich etwas Hilfe suche.
rahul286