通过传递字符串参数,使用shell_exec()执行对象文件 我执行的是对象文件 b>代码>,通过这样的方式从PHP页面执行C++程序实现: <?php //sent has value "http://www.paulgraham.com/herd.html" $url=$_POST['sent']; $text = file_get_contents($url); $temp=escapeshellarg(strip_tags($text)); //$temp = "one one two"; $output=shell_exec("/home/technoworld/Videos/LinSocket/Extra/Modular2/b " . $temp); echo $output; ?>

通过传递字符串参数,使用shell_exec()执行对象文件 我执行的是对象文件 b>代码>,通过这样的方式从PHP页面执行C++程序实现: <?php //sent has value "http://www.paulgraham.com/herd.html" $url=$_POST['sent']; $text = file_get_contents($url); $temp=escapeshellarg(strip_tags($text)); //$temp = "one one two"; $output=shell_exec("/home/technoworld/Videos/LinSocket/Extra/Modular2/b " . $temp); echo $output; ?>,php,shell-exec,Php,Shell Exec,那么,为什么从php文件传递它时会给出错误的结果呢 当我在$temp中将网页内容作为参数传递时,这是通过$text=file\u get\u contents($url)实现的$temp=escapeshellarg(带标签($text))然后它在浏览器上什么也不显示 有人能确定这里的问题是什么吗?尝试对参数stringPrint命令中的空格进行编码。您将看到它与您正在比较的不一样。@EliasVanOotegemescapeshellarg的文档说它在整个字符串周围加了引号。@Dheed:您能

那么,为什么从php文件传递它时会给出错误的结果呢

当我在
$temp
中将网页内容作为参数传递时,这是通过
$text=file\u get\u contents($url)实现的$temp=escapeshellarg(带标签($text))然后它在浏览器上什么也不显示


有人能确定这里的问题是什么吗?

尝试对参数stringPrint命令中的空格进行编码。您将看到它与您正在比较的不一样。@EliasVanOotegem
escapeshellarg
的文档说它在整个字符串周围加了引号。@Dheed:您能详细说明一下吗?
/b
是否正在将它的一些输出打印到
stderr
?我认为
shell\u exec()
只捕获
stdout
,这就是为什么您看不到
字符串是:
technoworld@ubuntu:~/Videos/LinSocket/Extra/Modular2$ ./b "one one,wo"
Client : 

string is :one one,wo 

one one wo 

 @ar[0]=1;ar[1]=2@