[英]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.