Como detectar em PHP, se estiver sendo executado no Apache, Nginx ou algum outro servidor web? [fechadas]


12

Primeiro eu conheço essa variável: _SERVER["SERVER_SOFTWARE"]

Em um dos meus aplicativos, desejo verificar no script PHP em qual servidor da web ele está sendo executado. Basicamente, será um plug-in do wordpress que ajudará os Bloggers a ajustar algumas configurações.

Eu criei um processo separado para o Apache & Nginx e também estava pensando em liberar código como dois plugins wordpress diferentes.

Então fiquei curioso para saber se existe uma maneira FULLPROOF no PHP para detectar servidores da web na perfeição.

Considere todos os casos: Apache, Nginx, Apache + Nginx, PHP como módulo Apache, PHP usando fastcgi, php-fpm, lighttpd, IIS, etc.

Também é crítico para o meu aplicativo detectar presença de combos e proxies.

Obrigado,

-Rahul

Respostas:


10

Resposta curta é que é impossível identificar deterministicamente qual servidor da web está em uso. O mais próximo que você vai chegar é o valor de $ _SERVER ["SERVER_SOFTWARE"].

É possível ter uma boa idéia de qual software está sendo executado em um [URL específico pela impressão digital do aplicativo, mas isso é muito muito complicado - e apenas informa o que está encerrando a conexão HTTP - pode ser um proxy.

O que você vê em phpinfo () não mostrará o servidor da web para o [fast] cgi e mostrará apenas o que o administrador escolhe disponibilizar em outros sistemas.

Também é crítico para o meu aplicativo detectar presença de combos e proxies.

Não faço ideia do que você quer dizer com 'combos'. Quanto aos proxies .... também não há como dizer isso.

Talvez se você explicou por que precisa dessas informações e que valor tem para você, talvez possamos adivinhar com mais informações uma resposta que atenda às suas necessidades.

C.


Por cambo, eu simplesmente quero dizer - alguns usuários escolhem o Nginx como servidor Web front-end e depois usam o Apache para executar o PHP. Um caso é que eles querem executar o cpanel e o nginx juntos. Agora, no meu aplicativo, em uma seção, desejo orientar os usuários para algumas regras de reescrita complexas com base no servidor da web. No caso apache + nginx acima, qual servidor Web meu script PHP detectará? I
rahul286

0

Alguém no site do PHP Manual postou uma maneira de obter phpinfo() variáveis ​​em uma matriz, há muitas informações lá, mas também Systemonde o php está sendo executado, talvez você possa usá-lo. Veja os comentários.

Além disso, a detecção de proxies não é tão fácil, você pode usar cabeçalhos http (como Via), mas existem várias maneiras de dar errado.


obrigado pela sua resposta e ajuda. Sei que por meio de cabeçalhos não podemos confiar e é por isso que estou procurando ajuda.
rahul286
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.