Jak wykryć w PHP, jeśli działa na Apache, Nginx lub innym serwerze internetowym? [Zamknięte]

12

Najpierw znam tę zmienną: _SERVER["SERVER_SOFTWARE"]

W jednej z moich aplikacji chcę sprawdzić ze skryptu PHP, na którym serwerze WWW działa. Zasadniczo będzie to wtyczka Wordpress, która pomoże Bloggerom w poprawieniu niektórych konfiguracji.

Stworzyłem osobny proces dla Apache i Nginx, a także zastanawiałem się nad wydaniem kodu jako 2 różnych wtyczek WordPress.

Wtedy właśnie zainteresowałem się tym, czy w PHP istnieje PEŁNY sposób na bezbłędne wykrywanie serwerów WWW.

Proszę wziąć pod uwagę wszystkie przypadki :: Apache, Nginx, Apache + Nginx, PHP jako moduł Apache, PHP za pomocą fastcgi, php-fpm, lighttpd, IIS itp.

Bardzo ważne jest również, aby moja aplikacja wykrywała obecność kombinacji i serwerów proxy.

Dzięki,

-Rahul

rahul286
źródło

Odpowiedzi:

10

Krótka odpowiedź jest taka, że ​​niemożliwe jest deterministyczne określenie, który serwer WWW jest używany. Najbliższa wartość to $ _SERVER [„SERVER_SOFTWARE”].

Można uzyskać dość dobry pomysł na to, jakie oprogramowanie działa pod [konkretnym adresem URL, poprzez pobranie odcisków palców aplikacji, ale jest to bardzo skomplikowane - i powie ci tylko, co kończy połączenie HTTP - może to być serwer proxy.

To, co widzisz w phpinfo (), nie pokaże serwera WWW dla [szybkiego] cgi i pokaże tylko to, co administrator zdecyduje się udostępnić w innych systemach.

Bardzo ważne jest również, aby moja aplikacja wykrywała obecność kombinacji i serwerów proxy.

Nie mam pojęcia, co rozumiesz przez „kombinacje”. Jeśli chodzi o proxy ... to też nie można tego powiedzieć.

Być może, jeśli wyjaśnisz, dlaczego potrzebujesz tych informacji i jaką to ma dla ciebie wartość, możemy być w stanie lepiej poinformować, która odpowiedź może odpowiadać Twoim potrzebom.

DO.

symcbean
źródło
Pod pojęciem cambo rozumiem po prostu - niektórzy użytkownicy wybierają Nginx jako front-endowy serwer WWW, a następnie używają Apache do uruchamiania PHP. Jednym z przypadków jest to, że chcą uruchomić cpanel i nginx razem. Teraz w mojej aplikacji, w jednej sekcji, chcę poprowadzić użytkowników do skomplikowanych reguł przepisywania opartych na serwerze internetowym. W powyższym przypadku Apache + Nginx, który serwer WWW wykryje mój skrypt PHP? I
rahul286
0

Ktoś na stronie podręcznika PHP napisał sposób na umieszczenie phpinfo() zmiennych w tablicy, jest tam wiele informacji, ale także Systemgdzie działa php, być może możesz tego użyć. Spójrz na komentarze.

Ponadto wykrywanie serwerów proxy nie jest takie łatwe, możesz użyć nagłówków http (jak Via), ale istnieje wiele sposobów, które mogą się nie udać.

rdzeń rdzeniowy
źródło
dziękuję za odpowiedź i pomoc. Wiem, że za pomocą nagłówków nie można ufać i dlatego szukam pomocy.
rahul286