如何利用内置PHP灵活性执行外部程序

没有人会怀疑,即使是最苛刻的批评家也不会怀疑PHP是多功能的:在最近的一次统计中,该语言有1,500多个内置函数和超过150个新增的扩展插件。但是,聪慧的PHP的创作者知道这些还不足以满足每一个人的要求,所以他们有额外添加了一定的灵活度——允许开发者从PHP内部启动他们自己的外部程序,并将所得到的输出再插入PHP应用程序中——所有的一切都不费吹灰之力! 数据挖掘工具

本文将向你介绍一些允许你启动外部程序的PHP函数,向你说明怎样获得输出或在你的PHP脚本中使用结果代码,并提醒你注意过程中潜在的弱点。

反引号运算符 数据挖掘论坛

如果你已经在*NIX中用过Bash shell,那么你一定已经比较熟悉反引号运算符(`),它可以用来在Bash脚本内部运行一个外部程序。PHP也正是采用了相同的技术:在PHP脚本中,简单地将外部程序的命令行放入反引号中,PHP将会在到达该行代码时启动这个外部程序。列表A向你显示了该怎么做。 数据挖掘实验室

列表A 数据挖掘实验室

<?php
`ls -l`;
?>

当然,就其本身而言,是没有什么作用的;多数情况下,你会想要将外部程序的输出引入到你的PHP脚本中进行进一步的处理。幸运的是,这也很简单——你要做的就是将反引号中所引的代码当做一个规则的PHP变量,然后用函数echo()print()将其显示出来。(列表B数据挖掘研究院

列表B
<?php
echo "Current date and time is: " . `date`;
?>

在本文里,PHP将获得系统命令的输出,然后用echo()将它内插入字符串中。输出如下: 数据挖掘研究院

Current date and time is: Wed Jun 21 04:27:01 CDT 2006

数据挖掘研究院

如果你愿意的话,你也可以获得并储存一个外部命令的输出,只需简单地将反引号中所引的命令赋值于一个变量就行了。(列表C数据挖掘交友

列表C
<?php
$date = `date`;
echo "Current date and time is: $date";
?>

以下是输入: 数据挖掘论坛

Current date and time is: Wed Jun 21 04:27:01 CDT 2006 数据挖掘研究院

函数exec()和passthru()

当PHP 的安全模式被激活时,反引号运算符就不可用了,这样如果在一个对PHP配置提供有限控制的共享主机上运行你的应用程序的话,就会出现问题。在这种情况下,你没有其它选择,只能采用两个PHP的内置函数exec()passthru()了,它们能够提供相似的功能。 数据挖掘论坛

函数exec()接受单个的包含了要执行命令的必要参数,运行它,然后会返回输出的最后一行。(列表D) 数据挖掘交友

列表D
<?php
echo exec("ls -l");
?>

输出是:

drwxr-xr-x 5 user cust 512 Jan 27 2005 vhost 数据挖掘论坛

大多数情况下,只检索命令的最后一行是不够的,这也是为什么exec()同时提供了两个备选的参数。第一个是一个数组,其中填充着命令得到的输出的每一行;第二个是一个保存命令返回的状态代码的变量。 数据挖掘实验室

列表E向你展示了一个例子。

数据挖掘研究院

列表E
<?php
$data = array();                // define array

exec("ls -l", $data, $ret);     // execute command, output is array

echo "<pre>";
if ($ret == 0) {                // check status code. if successful
    foreach ($data as $line) {  // process array line by line
        echo "$line ";
    }
} else {
    echo "Error in command";    // if unsuccessful display error
}
echo "</pre>";
?> 数据挖掘交友

这似乎很复杂,但是实际上非常简单。首先,定义一个空数组$data,调用exec()命令获得一个目录列表。命令返回的代码显示了它是否成功,然后将其储存在$ret中,列表的输出(如果有的话)储存在前面定义的数组$data中。接下来,返回的代码被检验,如果为0(表示成功了),再用一个foreach()循环来处理数组,并显示目录列表。如果返回的代码不为0的话,可能会认为发生了一个错误;跳过数组处理,而显示一个错误信息。

数据挖掘工具

列表F向你显示了输出。

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:如何使用PHP DOM创建动态XML文件
下一篇:如何利用内置PHP灵活性执行外部程序
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • P2P Search Engines-Napster
  • Peer to Peer ( P2P ) 综述
  • P2P Search Engines-Introduction
  • P2P Routing
  • P2P Search Engines-Music and P2P
  • P2P Search Engines-Historical Developmen
  • P2P Security
  • 如何从一个php文件向另一个地址post数据,
  • 基于PHP的AJAX技术实现文件异步上传
  • Copyright and P2P
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • P2P Search Engines-Introduction
  • P2P Search Engines-Music and P2P
  • P2P Search Engines-Historical Developmen
  • Copyright and P2P
  • P2P Search Engines-Napster
  • GNUtella
  • YouServ ?An Analysis
  • Freenet
  • P2P Search Engines
  • P2P Routing
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静