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


12

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

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

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

Тогда мне просто стало любопытно узнать, есть ли в PHP ПОЛНЫЙ ПУТЬ, чтобы безошибочно обнаруживать веб-серверы.

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

Также очень важно, чтобы мое приложение обнаруживало комбинации и прокси.

Благодарность,

-Rahul

Ответы:


10

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

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

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

Также очень важно, чтобы мое приложение обнаруживало комбинации и прокси.

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

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

C.


Под cambo я просто имею в виду - некоторые пользователи выбирают Nginx в качестве интерфейсного веб-сервера, а затем используют Apache для запуска PHP. В одном случае они хотят запустить cpanel и nginx вместе. Теперь в моем приложении, в одном разделе, я хочу показать пользователям сложное правило перезаписи, основанное на веб-сервере. В приведенном выше случае apache + nginx, какой веб-сервер будет обнаруживать мой PHP-скрипт? Я
rahul286

0

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

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


спасибо за ваш ответ и помощь. Я знаю, что через заголовки нельзя доверять, и именно поэтому я ищу некоторую помощь.
rahul286
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.