前言
做一個代碼發布的系統,需要用到PHP的exec函數來執行Linux下的命令和git,svn命令,如何判斷PHP的exec函數是否執行成功呢?
解決方案
寫個PHP文件來做實驗:
exec函數第一個參數是執行的命令,第二個參數是執行的結果,第三個參數是執行的狀態。
<?php exec('ls', $log, $status); print_r($log); print_r($status); echo PHP_EOL;
執行這個php文件:
這裡$log,$status輸出結果如圖。
但是$status為0,給人的感覺是執行失敗,其實不是,這是exec執行成功。
改一下這個php文件,給exec第一個參數一個錯誤的命令。
如:exec(‘lsaa',$log,$status).
再次執行,運行結果如圖:
這裡$status確是有值的。
那麼證明$status為0的時候表示exec執行是成功的。這裡PHP官方手冊上並沒有明確說明。
最終這個執行命令的方法如下:
PHP exec執行命令PHP
public function runLocalCommand($command) { $command = trim($command); $status = 1; $log = ''; exec($command . ' 2>&1', $log, $status); // 執行過的命令 $this->command = $command; // 執行的狀態 $this->status = !$status; return $this->status; }
去除了日志記錄和其他的判斷。
注意這裡:
$this->status = !$status;
返回狀態的時候取相反的值!
總結
以上就是PHP中判斷exec函數是否執行成功的詳細內容及實例代碼,有助於幫助大家深入掌握PHP開發,希望本文所述對大家PHP開發的學習有所幫助。