首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>php>php应用>正文

php中的exec函数并不想我想像的那样

http://www.oklinux.cn  2007-02-09  oklinux收集整理   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

用php时间不短了,但亲自做过的东西不多,exec等函数以前没有接触过,只是看别人的文章中提到了一些。现在要写一个修改apache密码的小功能,实现的方法早就明确了,但在使用exec函数的时候遇到了问题。

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等函数应该也是类似的。


上一篇:彻底解决refer编码问题   下一篇:用 PHP 编程语言开发动态 WAP 页面

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·用 PHP 编程语言开发动态 WAP 页面
·彻底解决refer编码问题
·在一个字符串中查找另一个字符串
·如何用正则表达式来表示中文
·PHP和正则表达式(2)
·用PHP开发C/S结构
·用PHP将mysql数据表转换为excel文件格式
·PHP中上传大体积文件时需要的设置
·Redhat中快速安装php/mysql
·在PHP中使用与Perl兼容的正则表达式
·用 PHP 实现通过 Web 执行 C/C++ 程序
·用php实现生成Excel文件范例(1):客户端
·PHP 程序加速探索
·PHP5 的异常处理机制(1)
·正则表达式中的特殊字符
·正则表达式在UBB论坛中的应用(2)
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统上把PHP编译进Apache静态内核
·关于PHP逗点连接符与引号问题
·php有关于正则表达式的详细说明
·通过gd库为图片添加透明水印
·第二节--PHP5 的对象模型
·用php对文件上传处理过程的进一步说明
·PHP分页显示制作详细讲解
·Linux主机重编译PHP支持GD库
·php+ImageMagick+imagick API 配置指南
·php抓取和分析
·第一节--面向对象编程
·php的预定义变量
  阅读排行
·Linux主机重编译PHP支持GD库
·MySQL (C API)VC实例及代码下载 (1)
·winbinder开发php桌面程序
·如何在Windows上配置并整合PHP和MySQL(
·php+ImageMagick+imagick API 配置指南
·通过gd库为图片添加透明水印
·MySQL (C API)VC实例及代码下载 (1)
·WASP使用方法简介(3)
·Linux系统上把PHP编译进Apache静态内核
·MySQL (C API)VC实例及代码下载 (1)
·如何在Windows上配置并整合PHP和MySQL(
·Zend Platform案例应用
·MySQL (C API)VC实例及代码下载 (1)
·用PHP来制作评论系统
·用php对文件上传处理过程的进一步说明
网摘收藏: