exec

(PHP 4, PHP 5, PHP 7, PHP 8)

exec執(zhí)行一個(gè)外部程序

說明

exec(string $command, array &$output = ?, int &$return_var = ?): string

exec() 執(zhí)行 command 參數(shù)所指定的命令。

參數(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í)提供 outputreturn_var 參數(shù), 命令執(zhí)行后的返回狀態(tài)會(huì)被寫入到此變量。

返回值

命令執(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() 來防止用戶欺騙系統(tǒng)執(zhí)行任意命令。

注意:

如何程序使用此函數(shù)啟動(dòng),為了能保持在后臺(tái)運(yùn)行,此程序必須將輸出重定向到文件或其它輸出流。否則會(huì)導(dǎo)致 PHP 掛起,直至程序執(zhí)行結(jié)束。

注意:

在 Windows 下,exec() 函數(shù)會(huì)先啟動(dòng) cmd.exe 來執(zhí)行指定的命令。如果你希望啟動(dòng)一個(gè)額外的應(yīng)用而不用先啟動(dòng) cmd.exe 可使用 proc_open() 函數(shù)加上 bypass_shell 參數(shù)。

參見