@ahwoobachairiesaas

Как побороть Warning: socket_create(): Unable to create socket [0]: Сделана попытка доступа к сокету методом, запрещенным правами доступа?

Пытаюсь сделать пинг.
Код:
function ping($host, $timeout = 1) {
    $socket = socket_create(AF_INET, SOCK_RAW, 1);
    if ($socket === false) {
        return array($err = socket_last_error(), socket_strerror($err));
    }
    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
    socket_connect($socket, $host, null);

    $ts = microtime(true);
    /* ICMP ping packet with a pre-calculated checksum */
    $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
    socket_send($socket, $package, strLen($package), 0);
    if (socket_read($socket, 255)) {
        $result = microtime(true) - $ts;
    } else {
        $result = false;
    }
    socket_close($socket);

    return $result;
}

Ошибка:
PHP Warning: socket_create(): Unable to create socket [0]: Сделана попытка дост
упа к сокету методом, запрещенным правами доступа.
in C:\Users\Сергей\Documents\Sandbox\sitetest\sitetest.php on line 23

Warning: socket_create(): Unable to create socket [0]: Сделана попытка доступа к
сокету методом, запрещенным правами доступа.
in C:\Users\Сергей\Documents\Sandbox\sitetest\sitetest.php on line 23
Ping failed: Сделана попытка доступа к сокету методом, запрещенным правами досту
па.
(10013)

Почему возвращается ошибка?
ОС - Windows 7 x64, брандмауэр - выключил.
  • Вопрос задан
  • 11232 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Потому что сырые сокеты можно только из под рута/админа делать. Запускайте консольку с правами админа и запускайте ваш скрипт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Включены ли сокеты в php.ini, правильно ли настроен Apache (подключён ли sockets.so)?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы