Короткий ответ заключается в том, что нет хорошего, универсального способа сделать это. Ping примерно так же близко, как вы можете получить (почти все хосты ответят на это), но, как вы заметили, на PHP, который обычно требует доступа root для использования низкого порта.
Позволяет ли ваш хост выполнять системные вызовы, чтобы вы могли запускать команду ping на уровне ОС и затем анализировать результаты? Вероятно, это ваш лучший выбор.
$result = exec("ping -c 2 google.com");
Если хост блокирует запрос пинг, вы могли бы сделать более общий Portscan искать другие открытые порты (но это довольно грубо, не делают его хозяев, которые не давали вам конкретные разрешение). Nmap - хороший инструмент для этого. Он использует довольно много трюков, чтобы выяснить, есть ли хост и какие службы могут работать или не работать. Однако будьте осторожны, так как некоторые хостинг-провайдеры прекратят использование вашей учетной записи для «хакерской активности», если вы устанавливаете и используете Nmap, особенно против хостов, которые вы не контролируете или не имеете разрешения на зондирование.
Кроме того, если вы находитесь на одном и том же непереключенном сетевом уровне в качестве другого хоста (например, если вы, например, находитесь в одной открытой сети WiFi), адаптер ethernet в беспорядочном режиме может обнюхать трафик с хоста и с него даже если он не отвечает непосредственно вам.
Какую услугу вы хотите проверить-Несс для? –
Хозяин в целом. Никакой конкретной услуги. В принципе, если хост находится в сети. У некоторых хостов нет веб-сервера или чего-то еще, так что это будет сложно. – Rob