怎样在php中执行exec命令

原创 2007年10月05日 17:39:00

具体我也没搞清楚,在网上找到一片文章,在我执行命令时返回值为1,可是明明存在的.exe文件怎么就不能运行呢?

==========================================================================

exec函数的作用是执行系统命令行命令,其语法为:
string exec ( string command [, array &output [, int &return_var]] )

其中command为要执行的命令字符串,output是执行命令的输出内容,数组格式,一行为数组中的一条记录,return_var是执行命令的返回值。

在dos下,直接执行htpasswd命令,不加任何参数,会得到类似如下的帮助:
E:/cvswork/svntools>htpasswd
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
……

因此,出于测试目的,先用exec同样执行一下这个命令看看效果,PHP代码如下:
exec(’ e:/cvswork/svntools/htpasswd.exe’, $ar, $status);
for ($i=0; $i < count($ar); $i++) $ar[$i] = htmlspecialchars($ar[$i]);
$msg = implode(’<br />’ . “/r/n”, $ar);
echo $msg;

代码执行没有错误,但同样什么输出也没有,为什么呢?把命令换成dir或cd都能够正确执行,把htpasswd.exe换成pk.exe也没有问题,难道这个和htpasswd有关系?摸索1个来小时后,终于发现了问题所在。

当使用exec执行不带任何参数的htpasswd.exe的时候,返回值$status是2,而带上参数“-nsb 1 1”以后,返回值是0,并且输出信息正常
1:{SHA}NWoZK3kTsExUV00Ywo1G5jlUKKs=

而执行htpasswd1.exe这个并不存在的文件的时候,返回值是1,并且没有任何输出信息。

因此,我的结论就是,当exec函数执行命令正常,返回值为0的时候,才有输出信息,而当函数执行命令不存在或者返回错误代码的时候,就没有输出信息了。而htpasswd.exe恰好在不带任何参数执行的时候,虽然能够print出帮助信息,但返回状态为2,所以exec函数就没有返回任何输出信息了。

和exec类似的system,passthru,shell_exec等函数应该也是类似的。

============================================================

 

PHP 的 exec()函数以及获取其返回值

exec执行外部程序。 语法:string exec(string command, string [array], int [return_var]);返回值: 字符串 函数种类: ...
  • shaobingj126
  • shaobingj126
  • 2011年06月02日 16:31
  • 53935

PHP exec()函数的介绍和使用DEMO

exec()函数用来执行一个外部程序,我们再用这函数基本是在linux。 开启exec()函数: exec()函数是被禁用的,要使用这个函数必须先开启。首先是 要关掉 安全模式 safe_...
  • tulouguli
  • tulouguli
  • 2017年05月08日 11:50
  • 689

php中判断shell_exec执行结果

在做第三方登录的时候,注册时头像下载比较耗时,所以改为了异步 shell_exec 执行wget     不过shell_exec执行成功无输出  和  执行失败 返回的都是null 在记录错误日志的...
  • u010332039
  • u010332039
  • 2016年05月04日 15:47
  • 4159

PHP exec 函数 及 system,exec,passthru区别用法详解

exec     执行外部程式。           语法       :   string   exec(string   command,   string   [array],   int ...
  • yangjun07167
  • yangjun07167
  • 2010年05月18日 11:26
  • 22929

PHP的exec()函数无返回值排查方法------借鉴本文方法后派上了用场,解决了问题

间接转载地址:http://blog.csdn.net/aoyoo111/article/details/21049759 在安全imagemagic时 需要用到 exec很多服务器上安装失败 ...
  • stpeace
  • stpeace
  • 2016年02月29日 23:58
  • 1783

php中exec()函数返回值

php中可以使用 exec() 函数调用外部函数。 语法: string exec ( string $command [, array &$output [, int &$return_var ]...
  • princess4426
  • princess4426
  • 2017年04月27日 20:18
  • 1739

PHP的exec()函数无返回值排查方法

在安全imagemagic时 需要用到 exec很多服务器上安装失败 exec()执行外部命令失败,但没有任何错误信息。  exec执行某命令在命令行下没有问题,但是在php中就出错。这个问题99....
  • aoyoo111
  • aoyoo111
  • 2014年03月11日 23:38
  • 16966

php exec用法详解

exec函数解析 exec语法: string exec(string command, string [array], int [return_var]); exec返回值: 字符串 ...
  • chenjie3392593
  • chenjie3392593
  • 2012年12月18日 15:59
  • 998

php exec()

执行外部程序。语法: string exec(string command, string [array], int [return_var]);返回值: 字符串函数种类: 操作系统与环境内容说明本函...
  • zuiaituantuan
  • zuiaituantuan
  • 2010年09月14日 09:33
  • 506

PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)

这篇文章主要介绍了PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解),需要的朋友可以参考下 exec 或者 system 都可以调用...
  • ziyubiti
  • ziyubiti
  • 2015年04月29日 17:33
  • 3878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎样在php中执行exec命令
举报原因:
原因补充:

(最多只允许输入30个字)