socket_create в PHP (Operation not permitted)

Модератор: Модераторы разделов

flashq3
Сообщения: 4
ОС: Suse 10.3

socket_create в PHP

Сообщение flashq3 »

Добрый день!

Пишу веб страничку, с которой необходимо сделать ICMP запрос (ping) на несколько компов.
Пытаюсь выполнить функцию:

Код: Выделить всё

socket_create(AF_INET, SOCK_RAW, getprotobyname('icmp'));

и получаю в ответ:

Код: Выделить всё

Unable to create socket [1]: Operation not permitted

как я понимаю это значит, что недостаточно прав для создания сокета. В интернете нашел, что правами создания сокетов обладает только root.
То есть чтобы создать сокет, надо запустить апач с правами root? Но мне кажется, что это не верное решение, да и апач предупреждает, что в этом случае нарушается безопасность.
Погуглив нашел подобные вопросы, но без ответов.
Кто нибудь знает как можно решить эту проблему?

Конфигурация:
OpenSUSE 10.3
httpd 2.2.6
php 5.2.5
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: socket_create в PHP

Сообщение serzh-z »

flashq3 писал(а):
01.02.2008 22:27
Но мне кажется, что это не верное решение
Верное решение - очень внимательно относиться к программам, которые создают сокет SOCK_RAW. Ибо такие сокеты позволено создавать лишь суперюзеру и никому больше. Разумеется, запускать Apache от рута - тоже просто уродская идея. Выход: вынести код, работающий с SOCK_RAW в отдельное приложение или скрипт и использовать suexec.
Спасибо сказали:
flashq3
Сообщения: 4
ОС: Suse 10.3

Re: socket_create в PHP

Сообщение flashq3 »

Странно, что я вчера сам ни разу на suEXEC не натолкнулся. Просто не знал что конкретно искать надо. А поискав нашел еще одну альтернативу - suPHP. Кажется для моей задачи она лучше подойдет. Сегодня вечером попробую.
Спасибо, что указали верное направление.
Спасибо сказали: