4

phpファイルで開始されたnetcat接続から値を取得しようとしていますが、次のように終了します。

localhost [127.0.0.1] 2000 (?) : Connection refused

理由はわかりませんが、Apacheユーザー(www-data)としてsshを実行するとうまく機能します。これは、私が行ったことです。

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とハートビートを備えたUbuntuServer9.04を実行するLAMPクラスターです。

私を夢中にさせているのは、このtest.phpが私のラップトップ(Ubuntuデスクトップ9.04のLAMP)でうまく機能し、サーバーのポートがすでに開いていてリッスンしているように見えることです。

$ 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

これはプログラミング関連の質問だと思いますか?コメントなしで閉じない場合は、どうぞ。

よろしくお願いします!!!

4

1 に答える 1

0

結局、それはパーミッションの問題でした... /etc/sudoers の編集を visudo で修正して追加しました:

www-data ALL = NOPASSWD: /bin/nc
于 2009-10-20T05:19:32.187 に答える