2009-10-17 155 views
3

我試圖得到一個數值從netcat的連接開始在一個PHP文件,但它與死亡:netcat的「連接被拒絕」 localhost上

localhost [127.0.0.1] 2000 (?) : Connection refused 

我不知道爲什麼,但它運作良好如果我ssh它作爲apache用戶(www數據),這是我做了什麼:

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中的響應),並且錯誤具有「連接被拒絕」錯誤。

該服務器是一個運行帶有DRBD和Heartbeat的Ubuntu Server 9.04的LAMP羣集。

什麼讓我發瘋的是,這test.php的工作以及在我的筆記本電腦(LAMP在Ubuntu桌面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 

我想這是一個與編程有關的問題吧?如果不是隻是關閉它沒有任何意見請。

先進的感謝!

+0

這可能屬於對serverfault.com但無論如何...你可以檢查的AppArmor正在執行?在'/ var/log/kern.log'中尋找'audit'。 – ephemient 2009-10-17 04:44:22

+0

我刪除了AppArmor來配置羣集,該日誌中沒有審覈條目,但謝謝! – coma 2009-10-17 16:23:03

+0

您是否嘗試將netvc調用添加-vv,以使netcat的輸出更加冗長? – rodion 2009-10-18 22:21:28

回答

0

嗯,這是一個權限問題畢竟...固定編輯/ etc /用visudo命令sudoers中添加:

www-data ALL = NOPASSWD: /bin/nc