Come rilevare in PHP, se è in esecuzione su Apache, Nginx o qualche altro server web? [chiuso]


12

Per prima cosa conosco questa variabile: _SERVER["SERVER_SOFTWARE"]

In una delle mie applicazioni, voglio controllare dallo script PHP su quale server web è in esecuzione. Fondamentalmente sarà un plugin wordpress che aiuterà i blogger a modificare alcune configurazioni.

Ho creato un processo separato per Apache e Nginx e stavo anche pensando di rilasciare il codice come 2 plugin di wordpress diversi.

Poi mi sono solo curioso di sapere se esiste un modo COMPLETO in PHP per rilevare i server web in modo impeccabile.

Si prega di considerare tutti i casi: Apache, Nginx, Apache + Nginx, PHP come modulo Apache, PHP usando fastcgi, php-fpm, lighttpd, IIS, ecc.

Inoltre è fondamentale per la mia applicazione rilevare la presenza di combo e proxy.

Grazie,

-Rahul

Risposte:


10

La risposta breve è che è impossibile identificare in modo deterministico quale server web è in uso. Il valore più vicino che otterrai è il valore di $ _SERVER ["SERVER_SOFTWARE"].

È possibile avere una buona idea di quale software stia funzionando su un [particolare URL tramite il fingerprinting dell'applicazione ma è molto complicato - e ti dirà solo cosa sta terminando la connessione HTTP - potrebbe essere un proxy.

Quello che vedi in phpinfo () non mostrerà il web server per [veloce] cgi e mostrerà solo ciò che l'amministratore sceglie di rendere disponibile su altri sistemi.

Inoltre è fondamentale per la mia applicazione rilevare la presenza di combo e proxy.

Non ho idea di cosa intendi per "combo". Per quanto riguarda i proxy .... non c'è modo di dirlo neanche.

Forse, se hai spiegato perché hai bisogno di queste informazioni e quale valore ha per te, potremmo essere in grado di fare un'ipotesi più informata su una risposta che potrebbe soddisfare le tue esigenze.

C.


Per cambo intendo semplicemente: alcuni utenti scelgono Nginx come server Web front-end e quindi usano Apache per eseguire PHP. Un caso è che vogliono eseguire insieme cpanel e nginx. Ora nella mia applicazione, in una sezione, voglio guidare gli utenti per alcune complesse regole di riscrittura basate sul server web. Nel caso sopra apache + nginx, quale web server rileverà il mio script PHP? I
rahul286,

0

Qualcuno sul sito del Manuale PHP ha pubblicato un modo per ottenere phpinfo() variabili in un array, ci sono molte informazioni lì, ma anche il luogo in Systemcui php è in esecuzione, forse puoi usarlo. Guarda i commenti.

Inoltre, rilevare i proxy non è così facile, puoi usare le intestazioni http (come Via) ma ci sono molti modi in cui può andare storto.


grazie per la risposta e l'aiuto. So che tramite le intestazioni non ci si può fidare e questa è la ragione per cui sto cercando aiuto.
rahul286,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.