了解python的朋友都知道,python的os模塊中system()方法可以執行shell命令行,因此執行與操作系統相關的內容;
而php中,同樣存在這樣的函數:system(),exec(),passthru()
system — 執行外部程序,並且顯示輸出
string system ( string $command [, int &$return_var ] )
如果 PHP 運行在服務器模塊中, system() 函數還會嘗試在每行輸出完畢之后, 自動刷新 web 服務器的輸出緩存。
如果要獲取一個命令未經任何處理的 原始輸出, 請使用 passthru() 函數。
command
要執行的命令。
return_var
如果提供 return_var 參數, 則外部命令執行后的返回狀態將會被設置到此變量中。
<?php
echo '<pre>';
// 輸出 shell 命令 "ls" 的返回結果
// 並且將輸出的最后一樣內容返回到 $last_line。
// 將命令的返回值保存到 $retval。
$last_line = system('ls', $retval);
// 打印更多信息
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>
提醒:在php.ini配置中safe_mode=on時,需要特別注意
safe_mode = (這個如果為off下面兩個就不用管了)
disable_functions =
safe_mode_exec_dir=
將需要執行的腳本放置到safe_mode_exec_dir指定的路徑下
exec()
原型:string exec (string command [, string array [, int return_var]])
exec() 函數與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最后一行。雖然它只返回命令結果的最后一行,但用第二個參數array可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二個參數時,才可以用第三個參數,用來取得命令執行的狀態碼。
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
#$res是一個數據,每個元素代表結果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的狀態碼。成功的情況下通常是0
void passthru ( string $command [, int &$return_var ] )
同 exec() 函數類似, passthru() 函數 也是用來執行外部命令(command)的。 當所執行的 Unix 命令輸出二進制數據, 並且需要直接傳送到瀏覽器的時候, 需要用此函數來替代 exec() 或 system() 函數。 常用來執行諸如 pbmplus 之類的可以直接輸出圖像流的命令。 通過設置 Content-type 為 image/gif, 然后調用 pbmplus 程序輸出 gif 文件, 就可以從 PHP 腳本中直接輸出圖像到瀏覽器。
以上希望對您有幫助,其實也是我自己溫故的pool;
