我的redhat上有php脚本,我通过telnet客户端以root身份登录 我运行bash脚本的PHP脚本是(functions.inc):
<?php
exec('/ilantest/testscript.sh');
?>
我的Bash脚本:
#!/bin/bash
echo "Hello world"
echo "Whats going on ?"
当我这样做:php functions.inc - 我得到以下内容:
怎么回事?[root @ X ilantest]#
为什么我看不到第一行? 谢谢!
答案 0 :(得分:4)
exec()请参阅http://us3.php.net/manual/en/function.exec.php#refsect1-function.exec-returnvalues
命令结果中的最后行。如果你需要执行一个 命令并将命令中的所有数据直接传回 没有任何干扰,请使用passthru()函数。得到的 执行命令的输出,请务必设置并使用输出 的参数强>
所以:
exec('/ilantest/testscript.sh', $output);
echo implode("\n", $output);
答案 1 :(得分:1)
在你的php脚本中试试
echo system('/ilantest/testscript.sh');
答案 2 :(得分:1)
如果未指定任何参数来接收输出,则仅打印最后一行。来自exec()手册:
如果输出参数存在,那么指定的数组将是 填充了命令的每一行输出。尾随 空格,例如\ n,不包含在此数组中。请注意,如果 数组已经包含一些元素,exec()会附加到 数组的结尾。如果您不希望该函数追加元素, 在将数组传递给exec()之前调用数组上的unset()。
您可以传递数组以接收所有行:
<?php
$lines = array();
exec('/ilantest/testscript.sh', $lines);
foreach($lines as $i) {
echo $i;
}
?>