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中的响应不同)并且错误有“连接被拒绝”错误。

该服务器是一个运行 Ubuntu Server 9.04 的 LAMP 集群,带有 DRBD 和 Heartbeat。

让我发疯的是,这个 test.php 在我的笔记本电脑(Ubuntu Desktop 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

好吧,毕竟这是一个权限问题...修复了使用 visudo 编辑 /etc/sudoers 以添加:

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