PHP中如何判断exec函数执行成功?

前言

做一个代码发布的系统,需要用到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开发的学习有所帮助。

(0)

相关推荐

  • 浅谈PHP的exec()函数无返回值排查方法(必看)

    在安全imagemagic时 需要用到 exec很多服务器上安装失败 exec()执行外部命令失败,但没有任何错误信息. exec执行某命令在命令行下没有问题,但是在php中就出错.这个问题99.99%与权限有关,但是exec执行的命令不会返回错误.一个技巧就是使用管道命令,假设你的exec调用如下: exec('convert a.jpg b.jpg', $output, $return_val); 可以更改如下: exec('convert a.jpg b.jpg 2>&1', $out

  • PHP中如何判断exec函数执行成功?

    前言 做一个代码发布的系统,需要用到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输出结果如图. 但是

  • C语言当函数执行成功时return1还是0

    目录 1.C语言函数的返回值 2."行业潜规则" 3.函数成功只有一种可能,函数失败却有多种可能 4.C语言程序员中还有一种"行业潜规则" 5.最后 今天分享的内容是关于函数执行成功,返回0还是1的讨论~ 基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常常产生不同的输出结果. 不同的输入,常常

  • Python eval()和exec()函数使用详解

    目录 python中的exec()函数和eval()函数 exec()函数 eval()函数 总结 eval() 和 exec() 函数都属于 Python 的内置函数.eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Python 的解释器.二者不同之处在于,eval() 执行完要返回结果,而 exec() 执行完不返回结果. eval()和exec()的用法 eval() 函数的语法格式为: eval(e

  • python判断all函数输出结果是否为true的方法

    我们们都学会判断真假,根据条件的不同,最终输出的结果可能为真,可能为假.在python的函数中,也有一个内置函数需要进行条件判断,那么在什么样的情况下,我们才能确保它输出的结果是true呢?今天就all函数的判断,我们进行简单的代码体验,然后分析在不同条件下,all函数的输出情况. 内置函数all 接收一个可迭代对象,如果其中所有的元素都是True,或者该可迭代对象中没有元素,返回True 等价于 def all(iterable): for element in iterable: if no

  • Python 中的判断语句,循环语句,函数

    目录 1. 判断语句 1.1 布尔类型和比较运算符 1.1.1 布尔类型 1.1.2 比较运算符 1.2 if 语句 1.2.1 if 语句基本格式 1.2.2 if else 语句 1.2.3 if elif else 语句 1.2.4 判断语句的嵌套 2. 循环语句 2.1 while 循环 2.1.1 while 循环基础语法 2.1.2 while 循环嵌套使用 2.2 for 循环 2.2.1 for 循环基础语法 2.2.2 range 语句 2.2.3 变量作用域 2.2.4 fo

  • JavaScript中exec函数用法实例分析

    本文实例讲述了JavaScript中exec函数用法.分享给大家供大家参考.具体如下: javaScript 中的 exec 函数,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组. rgExp.exec(str) 参数: rgExp   必选项.包含正则表达式模式和可用标志的正则表达式对象. str   必选项.要在其中执行查找的 String 对象或字符串文字. 说明: 如果 exec 方法没有找到匹配,则它返回 null.如果它找到匹配,则 exec 方法返回一个数组,并

  • php+MySQL判断update语句是否执行成功的方法

    update语句是PHP+MySQL中常用的操作,判断update语句是否执行成功是其中非常重要的一个环节.本文就以实例展示了php+MySQL判断update语句是否执行成功的方法.分享给大家供大家参考之用.具体方法如下: 代码一: $rs=MySQL_query($sql); if(mysql_affected_rows()) echo "sql执行成功"; else echo "sql执行失败"; 代码二: <?php /* 连接数据库 */ mysql

  • C++中判断成员函数是否重写

    C++中判断成员函数是否重写 判断一个成员函数是不是虚函数(重写),有两个三个条件: 两个成员函数各自在基类和派生类中定义: 基类中定义的成员函数必须带有关键字virtual,派生类的成员函数可带可不带. 这两个成员函数原型(函数名,函数参数,函数返回类型)必须相同. 注意:如果这两个函数的返回类型分别为基类和派生类,返回值为指向基类和派生类的指针或引用,则也构成重写.此返回类型称为协变. 调用这些成员函数时,使用对象指针,这样当指针指向不同的对象时,就可以调用不同类的成员函数. 下面给一个程序

  • php使用PDO下exec()函数查询执行后受影响行数的方法

    本文实例讲述了php使用PDO下exec()函数查询执行后受影响行数的方法.分享给大家供大家参考,具体如下: exec()方法返回执行后受影响的行数. 语法:int PDO::exec(string statement) 提示: 参数statement是要执行的SQL语句.该方法返回执行查询时受影响的行数,通常用于insert,delete和update语句中.但不能用于select查询,返回查询结果. 为了验证这个提示,下面我分别对insert,delete,update,select 查询进

  • PHP中exec函数和shell_exec函数的区别

    这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据. 假如脚本路径下有如下文件: 复制代码 代码如下: -bash-4.1# ll 总用量 12 -rw-rw-r--. 1 www web 133  7月 16 15:00 a.php -rw-r--r--. 1 lee web  59  2月 29 17:05 b.php -rw-r--r--. 1 lee web  81  3月  8 17:00 c.php

随机推荐