Назад | Перейти на главную страницу

Как определить в PHP, работает ли он на Apache, Nginx или другом веб-сервере?

Сначала я знаю эту переменную: _SERVER["SERVER_SOFTWARE"]

В одном из моих приложений я хочу проверить с помощью PHP-скрипта, на каком веб-сервере он работает. По сути, это будет плагин для wordpress, который поможет блоггерам немного настроить.

Я создал отдельный процесс для Apache и Nginx, а также думал о выпуске кода в виде двух разных плагинов для wordpress.

Затем мне просто стало любопытно узнать, есть ли в PHP ПОЛНОПРОФИЛЬНЫЙ способ безупречного обнаружения веб-серверов.

Пожалуйста, рассмотрите все случаи: Apache, Nginx, Apache + Nginx, PHP как модуль Apache, PHP с использованием fastcgi, php-fpm, lighttpd, IIS и т. Д.

Также очень важно для моего приложения обнаруживать комбо и присутствие прокси.

Спасибо,

-Рахул

Короткий ответ: невозможно детерминированно определить, какой веб-сервер используется. Ближайшее значение, которое вы получите, - это значение $ _SERVER ["SERVER_SOFTWARE"].

Можно получить довольно хорошее представление о том, какое программное обеспечение работает по [конкретному URL-адресу, по отпечатку пальца приложения, но это очень очень сложно - и он скажет вам только то, что завершает HTTP-соединение - это может быть прокси.

То, что вы видите в phpinfo (), не будет отображать веб-сервер для [fast] cgi, а покажет только то, что администратор выбирает сделать доступным в других системах.

Также очень важно для моего приложения обнаруживать комбо и присутствие прокси.

Понятия не имею, что вы подразумеваете под «комбо». Насчет прокси .... и этого тоже нет возможности сказать.

Возможно, если бы вы объяснили Зачем вам нужна эта информация и ее ценность для вас, тогда мы сможем сделать более обоснованное предположение относительно ответа, который может удовлетворить ваши потребности.

С.

Кто-то на сайте руководства PHP разместил способ получить phpinfo() переменных в массив, там много информации, но также System где запущен php, возможно, вы сможете это использовать. Посмотрите комментарии.

Кроме того, обнаружить прокси не так просто, вы можете использовать заголовки http (например, Via), но есть много причин, по которым это может пойти не так.