怎样在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 执行系统外部命令 system() exec() passthru()

PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功...

PHP 执行系统外部命令 system() exec() passthru()

PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功...

PHP 执行系统外部命令 system() exec() passthru()

PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功...

PHP 执行系统外部命令 system() exec() passthru()

PHP 执行系统外部命令 system() exec() passthru() 2010-01-07    文章来源:互联网    浏览次数:1030    分享文章 PH...

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

这篇文章主要介绍了PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解),需要的朋友可以参考下 exec 或者 system 都可以调用...

PHP中exec、system等函数调用linux命令问题

PHP中提供了几个调用linux命令的函数,exec、system、passthru,函数使用请参考手册,这里不具体介绍。下面我以exec函数为例具体介绍:       比如LINUX中修改服务器时间...

PHP中exec、system等函数调用linux命令问题

先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下。下面我将详细介绍:        PHP中提供了几个调用linux命令的函...

php中使用exec,system等函数调用系统命令

php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。   在很多时候利用php的exec,system等函数...

php中使用exec,system等函数调用系统命令

php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。   在很多时候利用php的exec,system等函数调用系...

PHP中调用系统命令的system(),exec(),passthru()

我们知道php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:    syst...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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