Проверка порта от php - PullRequest
       21

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

1 голос
/ 18 ноября 2009

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

Ответы [ 3 ]

2 голосов
/ 18 ноября 2009

Вы можете поместить код в скрипт 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 можно найти здесь .

0 голосов
/ 18 ноября 2009

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

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

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

0 голосов
/ 18 ноября 2009

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

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

http://www.planet -source-code.com / VB / скрипты / ShowCode.asp? LngWId = 8 & txtCodeId = 1786

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

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

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

...