愚蠢的问题,这段代码:
<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>
使用文件test.txt:
blah
打印:
blah
blah
我怎么能用system()函数不打印任何内容所以我得到1“blah”???
答案 0 :(得分:6)
system
显示程序输出的任何内容并返回最后一行输出。
exec
不显示任何内容并返回最后一行输出。
passthru
显示程序输出的任何内容并且不返回任何内容。
答案 1 :(得分:5)
使用exec
代替system
答案 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
,然后再打印出来。
使用exec
或shell_exec
代替系统。