您的位置:首页 > 运维架构 > Shell

PHP 命令行工具 shell_exec, exec, passthru

2010-12-06 23:18 489 查看
PHP为执行外部命令提供了函数,其中包括shell_exec(),exec(),passthru(),system().



1.shell_exec()

命令行实际上仅是后撇号(`)操作符变体。返回命令执行后的输出

例如,下面命令显示了如何使用反撇号在当前目录中获取/usr文件下的的文件列表。

a)基于Shell脚本

#! /bin/sh
ls /usr



b)PHP中调用[b]shell_exec() ,运行相同的命令[/b]

<?php
$lists = shell_exec('ls /usr');
echo $lists;
?>




2.passthru()

允许您运行外部程序,并在屏幕上显示结果。

不需要使用 echo 或 return 来查看结果,它会将输出结果直接输出到浏览器(或当前终端).

您可以添加可选的参数,即保存从外部程序返回的代码的变量,比如表示成功的 0,这为调试提供更好的机制。

<?php
passthru('ls /usr | head -5',$returnval);
if($returnval){//$returnval>1,则表示有错误
    echo '脚本错误';
}else{
    echo '目录列出完成';
}
?>




3.exec()

exec() 命令与 shell_exec() 相似,不同之处是它返回输出的最后一行,并且可选地用命令的完整输出和错误代码填充数组。

a)运行 [b]exec() 而不捕捉数据数组中的数据[/b]

<?php
$results = exec('ls /usr | head -5');
echo $results;
//仅仅输出最后一行结果
?>




b)从 [b]exec() 捕捉数据数组的结果[/b]

<?php
$results = exec('ls /usr | head -5',$data);
print_r($data);
 
//返回数据的数组格式
//格式如下:
//Array ( [0]=> test [1] => local/) 
?>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: