php腳本運行shell命令


了解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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM