PHP中如何判斷exec函數(shù)執(zhí)行成功?
前言
做一個代碼發(fā)布的系統(tǒng),需要用到PHP的exec函數(shù)來執(zhí)行Linux下的命令和git,svn命令,如何判斷PHP的exec函數(shù)是否執(zhí)行成功呢?
解決方案
寫個PHP文件來做實(shí)驗(yàn):
exec函數(shù)第一個參數(shù)是執(zhí)行的命令,第二個參數(shù)是執(zhí)行的結(jié)果,第三個參數(shù)是執(zhí)行的狀態(tài)。
<?php
exec('ls', $log, $status);
print_r($log);
print_r($status);
echo PHP_EOL;
執(zhí)行這個php文件:

這里$log,$status輸出結(jié)果如圖。
但是$status為0,給人的感覺是執(zhí)行失敗,其實(shí)不是,這是exec執(zhí)行成功。
改一下這個php文件,給exec第一個參數(shù)一個錯誤的命令。
如:exec(‘lsaa',$log,$status).
再次執(zhí)行,運(yùn)行結(jié)果如圖:

這里$status確是有值的。
那么證明$status為0的時(shí)候表示exec執(zhí)行是成功的。這里PHP官方手冊上并沒有明確說明。
最終這個執(zhí)行命令的方法如下:
PHP exec執(zhí)行命令PHP
public function runLocalCommand($command) {
$command = trim($command);
$status = 1;
$log = '';
exec($command . ' 2>&1', $log, $status);
// 執(zhí)行過的命令
$this->command = $command;
// 執(zhí)行的狀態(tài)
$this->status = !$status;
return $this->status;
}
去除了日志記錄和其他的判斷。
注意這里:
$this->status = !$status;
返回狀態(tài)的時(shí)候取相反的值!
總結(jié)
以上就是PHP中判斷exec函數(shù)是否執(zhí)行成功的詳細(xì)內(nèi)容及實(shí)例代碼,有助于幫助大家深入掌握PHP開發(fā),希望本文所述對大家PHP開發(fā)的學(xué)習(xí)有所幫助。
相關(guān)文章
yii2框架中使用下拉菜單的自動搜索yii-widget-select2實(shí)例分析
php curl抓取網(wǎng)頁的介紹和推廣及使用CURL抓取淘寶頁面集成方法
PHP的文件操作與算法實(shí)現(xiàn)的面試題示例
基于ThinkPHP實(shí)現(xiàn)的日歷功能實(shí)例詳解

