我正在尝试从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和Heartbeat的Ubuntu Server 9.04的LAMP集群。
令我发疯的是,这个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
我认为这是一个与节目相关的问题吗?如果不是在没有任何评论的情况下关闭它。
先谢谢!!!
答案 0 :(得分:0)
嗯,毕竟这是一个权限问题...用visudo修复编辑/ etc / sudoers添加:
www-data ALL = NOPASSWD: /bin/nc