【发布时间】:2011-02-03 19:34:42
【问题描述】:
愚蠢的问题,这段代码:
<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>
带有文件 test.txt:
blah
打印:
blah
blah
我可以用 system() 函数做什么来不打印任何内容,所以我得到 1 个“blah”???
【问题讨论】:
愚蠢的问题,这段代码:
<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>
带有文件 test.txt:
blah
打印:
blah
blah
我可以用 system() 函数做什么来不打印任何内容,所以我得到 1 个“blah”???
【问题讨论】:
使用exec 而不是system
【讨论】:
根据手册——见system():
system()和 C 版本一样 它执行的功能 给定的命令和输出 结果。
这解释了第一个blah
并且:
返回命令的最后一行 输出成功
你正在回显返回的值——这解释了第二个blah。
如果你想执行一个命令,并获得一个变量的完整输出,你应该看看 exec 或 shell_exec。
第一个将把输出的所有行放到一个数组中(见第二个参数);第二个将为您提供完整的字符串输出。
【讨论】:
system 正在调用实际的cat 程序,它从test.txt 输出“blah”。它还将值返回给$variable,然后您将再次打印出来。
使用exec 或shell_exec 代替系统。
【讨论】:
system 显示程序输出的任何内容并返回输出的最后一行。
exec 不显示任何内容并返回输出的最后一行。
passthru 显示程序输出的任何内容并且不返回任何内容。
【讨论】:
请改用exec。要获取所有输出,而不仅仅是最后一行,请执行以下操作:
$variable = array();
$lastline = exec("cat /home/maxor/test.txt", $variable);
echo implode("\n", $variable);
【讨论】: