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