Comment détecter en PHP, s'il fonctionne sur Apache, Nginx ou un autre serveur Web? [fermé]

12

Je connais d'abord cette variable: _SERVER["SERVER_SOFTWARE"]

Dans l'une de mes applications, je souhaite vérifier à partir du script PHP sur quel serveur Web il s'exécute. Fondamentalement, ce sera un plugin wordpress qui aidera les blogueurs à modifier certains paramètres.

J'ai créé un processus séparé pour Apache et Nginx et pensais également à libérer du code sous forme de 2 plugins wordpress différents.

Ensuite, je suis simplement devenu curieux de savoir s'il existe un moyen FULLPROOF en PHP pour détecter les serveurs Web sans faille.

Veuillez considérer tous les cas :: Apache, Nginx, Apache + Nginx, PHP comme module Apache, PHP utilisant fastcgi, php-fpm, lighttpd, IIS, etc.

Il est également essentiel pour mon application de détecter la présence de combos et de proxys.

Merci,

-Rahul

rahul286
la source

Réponses:

10

La réponse courte est qu'il est impossible d'identifier de manière déterministe quel serveur Web est utilisé. Le plus proche que vous obtiendrez sera la valeur de $ _SERVER ["SERVER_SOFTWARE"].

Il est possible d'avoir une assez bonne idée du logiciel exécuté sur une [URL particulière par empreinte digitale d'application, mais c'est très compliqué - et cela ne vous dira que ce qui met fin à la connexion HTTP - il peut s'agir d'un proxy.

Ce que vous voyez dans phpinfo () n'affichera pas le serveur web pour [fast] cgi et il montrera seulement ce que l'administrateur choisit de rendre disponible sur d'autres systèmes.

Il est également essentiel pour mon application de détecter la présence de combos et de proxys.

Je n'ai aucune idée de ce que vous entendez par «combos». Quant aux procurations ... il n'y a aucun moyen de le dire non plus.

Peut-être que si vous avez expliqué pourquoi vous avez besoin de ces informations et quelle valeur elles ont pour vous, nous pourrons peut-être faire une supposition plus éclairée quant à une réponse qui pourrait répondre à vos besoins.

C.

symcbean
la source
Par cambo, je veux simplement dire - certains utilisateurs choisissent Nginx comme serveur Web frontal, puis utilisent Apache pour exécuter PHP. Un cas est qu'ils veulent exécuter cpanel et nginx ensemble. Maintenant, dans mon application, dans une section, je veux guider les utilisateurs pour une règle de réécriture complexe basée sur le serveur Web. Dans le cas ci-dessus d'apache + nginx, quel serveur Web mon script PHP détectera-t-il? I
rahul286
0

Quelqu'un sur le site PHP Manual a publié un moyen de placer des phpinfo() variables dans un tableau, il y a beaucoup d'informations mais aussi l' Systemendroit où PHP est exécuté, vous pouvez peut-être l'utiliser. Regardez les commentaires.

De plus, la détection des proxys n'est pas si simple, vous pouvez utiliser des en-têtes http (comme Via) mais il y a beaucoup de façons dont cela peut mal tourner.

coredump
la source
merci pour votre réponse et votre aide. Je sais que les en-têtes ne sont pas fiables et c'est la raison pour laquelle je cherche de l'aide.
rahul286