PHP中的system()函数打印变量2次

时间:2010-04-02 17:25:25

标签: php function system

愚蠢的问题,这段代码:

<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>

使用文件test.txt:

blah

打印:

blah
blah

我怎么能用system()函数不打印任何内容所以我得到1“blah”???

5 个答案:

答案 0 :(得分:6)

system显示程序输出的任何内容并返回最后一行输出。

exec不显示任何内容并返回最后一行输出。

passthru显示程序输出的任何内容并且不返回任何内容。

答案 1 :(得分:5)

答案 2 :(得分:2)

根据手册 - 请参阅 system()

  

system()就像C版一样   它执行的功能   给定的命令和输出   结果

其中解释了第一个blah


而且:

  

返回命令的最后一行   输出成功

你回复了返回的值 - 这解释了第二个blah


如果要执行命令并获得变量的完整输出,则应该查看 exec shell_exec

第一个会将输出的所有行输出到数组(参见第二个参数);第二个将以字符串的形式获得完整的输出。

答案 3 :(得分:2)

请改用exec。要获得所有输出,而不仅仅是最后一行,请执行以下操作:

$variable = array();
$lastline = exec("cat /home/maxor/test.txt", $variable);
echo implode("\n", $variable);

答案 4 :(得分:0)

system正在调用实际的cat程序,该程序从test.txt输出“blah”。它还会将值返回到$variable,然后再打印出来。

使用execshell_exec代替系统。