PHP и RAW РОЗЕТКИ на Linux

Достаточно ли сделать

sudo setcap cap_net_raw=eip /usr/bin/php5

можно использовать RAW SOCKETS в PHP (не CLI) в Linux?

Если да, то это не работает (но начал работать в CLI, но не использовал Apache)

Так что я полагаю, что я должен дать эти разрешения Apache, но я не мог понять, как это сделать.

Вы можете мне помочь?

ошибки из скрипта PHP:Warning: socket_create(): Unable to create socket [1]: Operation not permitted in

скрипт php:

$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
        $socket = socket_create(AF_INET, SOCK_RAW, 1);
        if ($socket !== false) {
            socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0));
            echo 'Creating PING Socket !';

            socket_connect($socket, gethostbyname('noczone.com'), null);
            socket_send($socket, $package, strLen($package), 0);
            if (socket_read($socket, 255)) {
                $result = microtime(true) - $ts;
            } else {
                echo 'Error Code : No PING';
            }
            socket_close($socket);
        } else {
            echo 'Failed Creating PING Socket !';
        }

2 ответа

Ты пытался:sudo setcap cap_net_raw=eip $(which httpd)?

Какую ошибку вы получаете?

Скорее всего, интерпретатор PHP реализован как модуль в Apache (вы можете увидеть это по php_sapi_name() или по константе PHP_SAPI в PHP, или из ini-файла httpd).

В этом случае вам нужно дать исполняемому файлу httpd возможность.

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