php中ytem和exec的区别是什么?

2025-04-13 11:00:18 5
  • 收藏
  • 管理
    区别:system()函数可以输出和返回结果;第二个参数是可选的,用来得到命令执行后的状态码。exec()不输出结果,而是返回结果的最后一行;虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果。 在PHP中调用外部命令,可以用exec 及 system来实现。那么它们之间有什么差异,下面本篇文章给大家介绍一下php中system和exec的区别。 一、exec —执行外部程序 复制stringexec(string $command [, array &$output [,int&$return_var ]]) $command:要执行的shell 命令 $output:shell命令的输出填充此数组,每行输出填充数组中的一个元素。 请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。 $return_var 命令执行后的返回状态,命令执行成功值是0 返回值:shell命令输出的最后一行 ps: 2>&1 exec不成功,调试方案一个技巧就是使用管道命令, 使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。 例子1 (1)代码所在的index.php 文件的结构 (2)代码 复制$out =[34]; $res =exec(ls 2>&1,$out,$return_status); var_dump($res); echo ------; var_dump($out); echo ------; var_dump($return_status); (3)执行结果 复制zhangxueqing:demo playcrab$ php ./1/index.php /Users/playcrab/www/demo/1/index.php:10:string(11)"webuploader"------/Users/playcrab/www/demo/1/index.php:12: array(10){[0]=>int(34)[1]=>string(1)"1"[2]=>string(6)"1.html"[3]=>string(5)"1.php"[4]=>string(10)"client.php"[5]=>string(14)"design-pattern"[6]=>string(3)"img"[7]=>string(17)"jquery.blockUI.js"[8]=>string(10)"static.php"[9]=>string(11)"webuploader"}------/Users/playcrab/www/demo/1/index.php:14:int(0) 二、system —执行外部程序,并且显示输出 复制string system (string $command [,int&$return_var ]) $command 要执行的命令 $return_var 命令执行后的返回状态,值是0表示成功 返回结果: 成功返回0, 失败(命令不存在等原因) 返回 非0值 1.示例代码 复制$res = system(ls 2>&1,$return_status);var_dump($res);echo ------;var_dump($return_status); 2.输出结果 总结: system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码 exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。 推荐:《PHP视频教程》
    上一页:php中ytem的意思是什么 下一页:php中xml转换jon问题
    全部评论(0)