netcat "Отказано в соединении" на локальном хосте

Я пытаюсь получить значение из соединения netcat, запущенного в php-файле, но оно умирает с:

localhost [127.0.0.1] 2000 (?) : Connection refused

Я не знаю, почему, но это работает хорошо, если я ssh, как пользователь apache (www-data), вот что я сделал:

1) Запустите бесконечный цикл, обслуживающий дату с небольшой задержкой:

$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&

2) Проверьте, работает ли:

$ su www-data
$ nc localhost 2000
Fri Oct 16 21:33:20 COT 2009

3) Создайте /var/www/test.php следующим образом:

<pre><?php
exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
?></pre>

4) Запустите его в браузере:

http://myserver.com/test.php

5) Наконец, взгляните на оба txt, даты пустые (ничего похожего на ответ в #2), и ошибки имеют ошибку "Отказано в соединении".

Сервер представляет собой кластер LAMP под управлением Ubuntu Server 9.04 с DRBD и Heartbeat.

Что сводит меня с ума, так это то, что этот test.php хорошо работает на моем ноутбуке (LAMP на Ubuntu Desktop 9.04), и на сервере, кажется, порты уже открыты и прослушиваются:

$ netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:4743            0.0.0.0:*               LISTEN      2326/openhpid   
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3364/mysqld     
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      9510/nc         
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3470/apache2    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2320/sshd       
tcp        0      0 127.0.0.1:3551          0.0.0.0:*               LISTEN      2354/apcupsd    
tcp6       0      0 :::22                   :::*                    LISTEN      2320/sshd

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

Спасибо заранее!

1 ответ

Решение

В конце концов, это была проблема с разрешениями... исправлено редактирование /etc/sudoers с помощью visudo:

www-data ALL = NOPASSWD: /bin/nc
Другие вопросы по тегам