2010-04-02 51 views
2

愚蠢的問題,這樣的代碼:系統()的PHP函數打印變量2倍

<?php 
$variable = system("cat /home/maxor/test.txt"); 
echo $variable; 
?> 

與文件test.txt:

blah 

打印:

blah 
blah 

能有什麼我用系統()函數不打印什麼,所以我得到1「等等」???

回答

2

根據手冊 - 見system()

system()就像在它執行的C 版本功能 給定的命令和輸出 結果

這也解釋了第一blah


人和:

返回命令成功 輸出

而你呼應返回的最後一行價值 - 這解釋了第二個blah


如果要執行命令,並獲得完整的輸出到一個變量,你應該看看exec,或​​

第一個會讓你把所有的輸出行都排列到(見第二參數);第二個會以字符串的形式爲您提供完整的輸出。

0

system正在調用實際的cat程序,它從test.txt輸出「blah」。它還會將值返回到$variable,然後再打印出來。

使用exec或​​而不是系統。

5

system顯示任何程序輸出並返回最後一行輸出。

exec什麼都不顯示,並返回最後一行輸出。

passthru顯示任何方案產出和回報什麼。

2

改爲使用exec。爲了讓所有的輸出,而不僅僅是最後一行做到這一點:

$variable = array(); 
$lastline = exec("cat /home/maxor/test.txt", $variable); 
echo implode("\n", $variable);