首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何隐藏system()输出

如何隐藏system()输出
EN

Stack Overflow用户
提问于 2011-07-15 22:01:34
回答 3查看 24.5K关注 0票数 21

我正在使用windows XP。通过调用自动化ssh会话的TCL脚本,我可以通过浏览器成功运行system()命令。我还从脚本中返回一个值。但是,我的问题是,该脚本会在浏览器中转储整个ssh会话。

我的php脚本如下所示:

代码语言:javascript
复制
$lastline=system('"C:\tcl\bin\tclsh.exe" \path to file\filename.tcl '.$username.' '.$pass,$val);  

filename.tcl:

代码语言:javascript
复制
spawn plink -ssh $user@$host   
expect "password:"  
send "$pass\r"  
expect "\prompt:/->"   
set $return_value [string compare /..string../ $expect_out(buffer)]   
/...some code...this runs fine/  
exit $return_value   

一切运行正常,我正确地得到了$return_value,但是php文件在我的浏览器中打印出了整个ssh会话的执行结果,如下所示:

使用用户名“

”的管理员。admin@10.135.25.150的密码:=== /*some text*/ === \prompt:/->.../some text/

我想阻止system()函数在我的浏览器中打印

我已经使用了shell_exec()函数,但是它返回了整个ssh会话结果(我已经在tcl脚本中解析了该结果,并获得了返回给php脚本的精确值)。有没有一种方法可以不使用shell_exec()而使用system()来实现这一点

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-15 22:06:19

documentation for system()特别指出:

执行外部程序并显示输出

在该页面上列出了备选方案。如果您改用the exec function,它将只执行命令而不显示任何输出。

示例:

代码语言:javascript
复制
<?php
echo "Hello, ";
system("ls -l");
echo "world!\n";
?>

将显示system的输出

代码语言:javascript
复制
$ php -q foo.php
Hello, total 1
-rw-r--r-- 1 bar domain users 59 Jul 15 16:10 foo.php
world!

使用exec时不会显示任何输出:

代码语言:javascript
复制
<?php
echo "Hello, ";
exec("ls -l");
echo "world!\n";
?>

$ php -q foo.php
Hello, world!
票数 31
EN

Stack Overflow用户

发布于 2011-07-15 22:03:08

在调用之前使用ob_start();,在调用之后使用ob_clean();

http://sandbox.phpcode.eu/g/850a3.php

代码语言:javascript
复制
<?php 
ob_start(); 
echo '<pre>'; 
$last_line = system('ls'); 
ob_clean(); 
echo 'nothing returned!'; 
?>
票数 4
EN

Stack Overflow用户

发布于 2011-07-15 22:04:44

通常,如果您想防止向浏览器输出任何内容,可以在调用system()之前使用ob_start(),然后使用ob_end_clean()。请参阅http://php.net/manual/en/function.ob-start.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6708145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档