当前位置:首页 > PHP教程 > php函数 > 列表

检查PHP的exec函数是否执行成功

发布:smiling 来源: PHP粉丝网  添加日期:2018-09-17 09:43:22 浏览: 评论:0 

做一个代码发布的系统,需要用到PHP的exec函数来执行Linux下的命令和git,svn命令,如何判断PHP的exec函数是否执行成功呢?

写个PHP文件来做实验:

exec函数解析

exec语法: string exec(string command, string [array], int [return_var]);

exec返回值: 字符串

Exec参数说明

Command – 需要执行的命令

Array –  是输出值

return_var –是返回值0或1,如果返回0则执行成功,返回1则执行失败。

exec函数第一个参数是执行的命令,第二个参数是执行的结果,第三个参数是执行的状态。

  1. exec('ls'$log$status); 
  2.  
  3. print_r($log); 
  4.  
  5. print_r($status); 
  6.  
  7. echo PHP_EOL; 

执行这个php文件:

  1. vagrant@homestead:~$ sudo vim aa.php 
  2. vagrant@homestead:~$ php aa.php 
  3. Array 
  4.   [0] => aa.php 
  5.   [1] => tanteng.me 
  6.   [2] => test.sh 

检查PHP的exec函数是否执行成功

这里$log,$status输出结果如图。

但是$status为0,给人的感觉是执行失败,其实不是,这是exec执行成功。

改一下这个php文件,给exec第一个参数一个错误的命令。

如:exec(‘lsaa’,$log,$status).

再次执行,运行结果如图:

  1. vagrant@homestead:~$ sudo vim aa.php 
  2. vagrant@homestead:~$ php aa.php 
  3. Array 
  4. 127 

检查PHP的exec函数是否执行成功

这里$status确是有值的。

那么证明$status为0的时候表示exec执行是成功的。这里PHP官方手册上并没有明确说明。

最终这个执行命令的方法如下:

PHP exec执行命令PHP

  1. public function runLocalCommand($command) { 
  2.     $command = trim($command); 
  3.     $status = 1; 
  4.     $log = ''
  5.     exec($command . ' 2>&1'$log$status); 
  6.     // 执行过的命令 
  7.     $this->command = $command
  8.     // 执行的状态 phpfensi.com 
  9.     $this->status = !$status
  10.     return $this->status; 

去除了日志记录和其他的判断。

注意这里:

$this->status = !$status;

返回状态的时候取相反的值!

Tags: exec函数 PHP执行成功

分享到:

相关文章