Проверка порта от php

Я пытаюсь подключиться к серверу Gmail Pop из установки phplist, и это не удается, но я не уверен, открыл ли мой веб-хост порт 995 или нет. Они говорят, что открыли его, но я сомневаюсь. Есть ли способ, которым я могу проверить это из сценария php? Они работают под управлением PHP 5.2.0 на сервере Windows, хотя я не уверен, что это за ОС. phpinfo() говорит: "Windows NT DEDI514 5.2, сборка 3790"

3 ответа

Решение

Вы можете поместить код в скрипт php, чтобы открыть соединение с определенным именем хоста (или IP-адресом) и портом. Если вы знаете ожидаемый ответ, вы сможете определить, получаете ли вы соединение. Если вы получили что-то вроде "Отказано в соединении", то либо вы заблокированы, либо хост назначения не принимает соединения через этот порт.

В этом примере используется IP-адрес 192.0.2.0 и порт 995. Замените их тем, что вы хотите проверить.

<?php
    echo "\nOpening connection\n\n";

    $fp = fsockopen("192.0.2.0", 995, $errno, $errstr);
    if (!$fp) {
        echo "ERROR: $errno - $errstr\n";
    } else {
        echo fread($fp, 1024);
        fclose($fp);
    }
?>

Вы также можете отправить данные на сервер, используя

fwrite($fp, "blah blah blah\r\n");

Больше информации о fsockopen здесь.

Я думаю, что вам нужно будет пинговать или отслеживать маршрут к машине, которая ответит на этот порт.

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

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=8&txtCodeId=1786

Здесь есть несколько других сценариев: http://www.theworldsend.net/

Я не могу поручиться за любое из них лично, но они выглядят так, как вам нужно.

И, конечно, если вы можете использовать ssh или telnet на своем сервере, вы можете сделать все это намного проще, используя команды ping и traceroute.

Может быть, безопасный режим активен? Это предотвращает вызов служб на других серверах.

Редактировать: Все функции файловой системы и потоков зависят от настроек безопасного режима!

open_basedir настройка влияет на fopen()!

Другие вопросы по тегам