免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1840 | 回复: 7
打印 上一主题 下一主题

cgi程序没有错误输出,命令行下有输出的怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-05 16:15 |只看该作者 |倒序浏览
有个cgi程序:test.cgi

  1. #!/usr/local/bin/perl
  2. use CGI;
  3. print "Content-type: text/html \n\n";
  4. my $a=`/usr/bin/rsync -Rvzrtopg --timeout=5 /data0/1.html \@6.1.1.2::Np_CnNew `;
  5. print $a;
复制代码
浏览器中执行

http://IP/cgi-bin/test.cgi

rsync异常时候没有输出,$a没有打印内容。
但是在命令行下执行
/usr/local/apache/cgi-bin/distribute_test6.cgi
是有输出的:

  1. Content-type: text/html

  2. rsync: failed to connect to 6.1.1.2: Connection timed out (110)
  3. rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.7]
复制代码
这是为什么呢?CGI配置问题还是CGI程序有问题?

论坛徽章:
0
2 [报告]
发表于 2012-07-05 16:23 |只看该作者
回复 1# kookies

你使用 ·· 来执行命令, $a 中接受的知识STDOUT 当你的rsync命令出错,错误是输出到了STDERR中了。

用普通的terminal 执行命令,通常STDOUT和STDERR 都输出到屏幕上了。所以你能看到
   

论坛徽章:
0
3 [报告]
发表于 2012-07-05 16:26 |只看该作者
回复 2# climby
请问怎么能捕获到rsync错误时候的输出呢?谢谢


   

论坛徽章:
0
4 [报告]
发表于 2012-07-05 16:30 |只看该作者
回复 3# kookies


    简单的办法就是将命令做STDERR重定向了:

  1.     my $a=`/usr/bin/rsync -Rvzrtopg --timeout=5 /data0/1.html \@6.1.1.2::Np_CnNew    2>&1 `;
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-07-05 16:33 |只看该作者
回复 4# climby

太感谢了!
   

论坛徽章:
0
6 [报告]
发表于 2012-07-05 16:38 |只看该作者
回复 4# climby


还想麻烦问下,如果我只想获取错误输出,成功执行的rsync不用获取执行结果。有办法么?

论坛徽章:
0
7 [报告]
发表于 2012-07-05 16:46 |只看该作者
回复 6# kookies


    呵呵,举一反三:

  1. my $a=`/usr/bin/rsync -Rvzrtopg --timeout=5 /data0/1.html \@6.1.1.2::Np_CnNew   2>&1  1>/dev/null`;
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-07-05 16:50 |只看该作者
回复 7# climby


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP