繁体   English   中英

PHP脚本执行bash脚本不会打印所有bash行

[英]PHP script exec bash script does not print all bash lines

我在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]#

为什么我看不到第一行?
谢谢 !

exec()参见http://us3.php.net/manual/en/function.exec.php#refsect1-function.exec-returnvalues

命令结果的最后一行。 如果您需要执行命令并直接将命令中的所有数据传回而不会受到任何干扰,请使用passthru()函数。 要获取已执行命令的输出,请确保设置并使用输出 参数

所以:

exec('/ilantest/testscript.sh', $output);
echo implode("\n", $output);

在您的PHP脚本中尝试

echo system('/ilantest/testscript.sh');

如果您未指定任何参数来接收输出,则仅输出最后一行。 exec()手册中:

如果存在output参数,则命令的输出的每一行都将填充指定的数组。 尾随空格(例如\\ n)不包含在此数组中。 请注意,如果数组已经包含一些元素,则exec()将追加到数组的末尾。 如果您不希望函数追加元素,请在将数组传递给exec()之前在数组上调用unset()。

您可以传递一个数组来接收所有行:

<?php
$lines = array();
exec('/ilantest/testscript.sh', $lines);
foreach($lines as $i) {
    echo $i;
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM