(PHP 4, PHP 5, PHP 7, PHP 8)
exec — 執(zhí)行一個(gè)外部程序
$command
, array &$output
= ?, int &$return_var
= ?): string
exec() 執(zhí)行
command
參數(shù)所指定的命令。
command
要執(zhí)行的命令。
output
如果提供了 output
參數(shù),
那么會(huì)用命令執(zhí)行的輸出填充此數(shù)組,
每行輸出填充數(shù)組中的一個(gè)元素。
數(shù)組中的數(shù)據(jù)不包含行尾的空白字符,例如 \n
字符。
請(qǐng)注意,如果數(shù)組中已經(jīng)包含了部分元素,exec()
函數(shù)會(huì)在數(shù)組末尾追加內(nèi)容。如果你不想在數(shù)組末尾進(jìn)行追加,
請(qǐng)?jiān)趥魅?exec() 函數(shù)之前
對(duì)數(shù)組使用 unset() 函數(shù)進(jìn)行重置。
return_var
如果同時(shí)提供
output
和
return_var
參數(shù),
命令執(zhí)行后的返回狀態(tài)會(huì)被寫(xiě)入到此變量。
命令執(zhí)行結(jié)果的最后一行內(nèi)容。 如果你需要獲取未經(jīng)處理的全部輸出數(shù)據(jù), 請(qǐng)使用 passthru() 函數(shù)。
如果想要獲取命令的輸出內(nèi)容,
請(qǐng)確保使用 output
參數(shù)。
示例 #1 exec() 例程
<?php
// 輸出運(yùn)行中的 php/httpd 進(jìn)程的創(chuàng)建者用戶名
// (在可以執(zhí)行 "whoami" 命令的系統(tǒng)上)
echo exec('whoami');
?>
當(dāng)傳入用戶提供的數(shù)據(jù)到本函數(shù)時(shí),應(yīng)使用 escapeshellarg() 或 escapeshellcmd() 來(lái)防止用戶欺騙系統(tǒng)執(zhí)行任意命令。
注意:
如何程序使用此函數(shù)啟動(dòng),為了能保持在后臺(tái)運(yùn)行,此程序必須將輸出重定向到文件或其它輸出流。否則會(huì)導(dǎo)致 PHP 掛起,直至程序執(zhí)行結(jié)束。
注意:
在 Windows 下,exec() 函數(shù)會(huì)先啟動(dòng) cmd.exe 來(lái)執(zhí)行指定的命令。如果你希望啟動(dòng)一個(gè)額外的應(yīng)用而不用先啟動(dòng) cmd.exe 可使用 proc_open() 函數(shù)加上
bypass_shell
參數(shù)。