PHP执行外部命令的函数:exec(), system(), passthru(), shell_exec()

yizhihongxing

当编写 PHP 程序时,您有时可能需要执行系统级别的操作,例如执行外部命令。PHP 提供了多种执行外部命令的函数,包括 exec()、system()、passthru() 和 shell_exec()。以下是对这四种函数的详细解释和使用示例。

exec()

函数原型:

string exec ( string $command [, array &$output [, int &$return_var ]] )

exec() 函数执行命令,并返回输出结果的最后一行。可以将一个变量用作第二个参数,该参数将捕获命令的输出。第三个参数可以用于捕获命令的返回值。

示例 1:

// 执行 ls 命令并将结果输出到终端
exec('ls', $output);
print_r($output);

上述示例会将当前目录下的文件列表输出到终端。

示例 2:

// 执行 whoami 命令并打印返回值
exec('whoami', $output, $return_val);
echo "返回值:$return_val";
echo "\n输出结果:$output";

上述代码会输出当前用户的用户名,并打印出命令的返回值。

system()

函数原型:

string system ( string $command [, int &$return_var ] )

system() 函数会像在终端上一样执行命令,并将其输出直接发送到终端上。与 exec() 不同,system() 函数不会返回命令输出的最后一行。

示例 1:

// 执行 pwd 命令并将结果输出到终端
system('pwd');

上述示例会将当前工作目录的绝对路径打印到终端。

示例 2:

// 执行 date 命令并获取返回值
$date = system('date', $return_val);
echo "返回值:$return_val";
echo "\n输出结果:$date";

上述代码会输出当前的日期和时间,并打印出命令的返回值。

passthru()

函数原型:

void passthru ( string $command [, int &$return_var ] )

passthru() 函数几乎与 system() 相同,但它只输出命令的结果,而不会将结果作为返回值返回给调用程序。这使您可以将命令的输出在终端上显示而不会在脚本中捕获它。

示例 1:

// 执行 whoami 命令并将结果直接输出到终端
passthru('whoami');

上述示例会在终端上直接输出当前用户的用户名。

示例 2:

// 执行 uptime 命令
passthru('uptime');

上述代码将在终端上输出当前系统的负载平均值和运行时间。

shell_exec()

函数原型:

string shell_exec ( string $cmd )

shell_exec() 函数执行命令,并捕获命令的完整输出。与 exec() 不同,它返回命令的所有输出,而不仅仅是最后一行。

示例 1:

// 执行 ps 命令并捕获完整输出
$output = shell_exec('ps aux');
echo $output;

上述示例会将当前系统上运行的进程列表输出到终端。

示例 2:

// 执行 cat 命令并将结果输出到终端
shell_exec('cat /etc/passwd');

上述代码会将系统上现有用户的列表输出到终端。

在使用这些函数时,请格外小心。如果您不小心执行了危险命令,可能会导致系统出现安全漏洞。执行操作之前,请确认您拥有足够的权限,并小心处理参数,以免发生漏洞。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP执行外部命令的函数:exec(), system(), passthru(), shell_exec() - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php中将数组转成字符串并保存到数据库中的函数代码

    下面是详细讲解「PHP中将数组转成字符串并保存到数据库中的函数代码」的攻略: 一、将数组转成字符串 我们可以使用内置的serialize()函数将一个数组序列化成字符串,例如: <?php $arr = array(‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’); $str = se…

    PHP 2023年5月26日
    00
  • php curl模拟post提交数据示例

    关于“php curl模拟post提交数据示例”的攻略,我来为你详细讲解。 1. 简介 cURL是一种可以通过URL的方式来传输数据的函数库。也就是说,我们可以用它来模拟发送HTTP请求,包括POST和GET请求。而PHP cURL则是一个PHP扩展,提供了与cURL库的接口。 在实际应用中,我们使用cURL来模拟POST请求的场景非常多,比如登录验证、数据…

    PHP 2023年5月23日
    00
  • 深入理解golang chan的使用

    深入理解golang chan的使用攻略 什么是chan chan(channel)是Golang中的一种并发原语,主要用于在 goroutine 之间传递数据和信号,它起到了 goroutine 通信的桥梁作用。chan 是一种类型,可以通过 make 函数初始化。 chan的创建和初始化 chan 的创建和初始化使用make函数,其语法如下: ch :=…

    PHP 2023年5月27日
    00
  • php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数

    PHP数组函数序列之array_count_values()函数 介绍 array_count_values() 函数用于统计数组中每个值出现的次数,并返回一个新数组,新数组的键是原数组的值,值是该值在原数组中出现次数。 语法 array_count_values($arr) 参数:- $arr (必需):规定要统计值的数组。 返回值:- 返回一个关联数组,…

    PHP 2023年5月26日
    00
  • Windows2008 最新版Apache2、PHP5、MySQL6、PHPMyadmin、ZendOptimizer安装图解

    Windows2008 最新版Apache2、PHP5、MySQL6、PHPMyadmin、ZendOptimizer安装图解 准备工作 在开始安装之前,需要下载以下软件: Apache2:官网下载页面 PHP5:官网下载页面 MySQL6:官网下载页面 PHPMyadmin:官网下载页面 ZendOptimizer:官网下载页面 Visual C++ Re…

    PHP 2023年5月24日
    00
  • PHP实现根据数组的值进行分组的方法

    实现根据数组的值进行分组的方法,可以借助PHP自带的函数array_reduce()和array_merge()。具体步骤如下: 定义初始结果数组 通过array_reduce()函数对数组进行遍历,将结果放入一个初始化的空数组中。 $groups = array_reduce($arr, function($result, $item) { … ret…

    PHP 2023年5月26日
    00
  • php+MySql实现登录系统与输出浏览者信息功能

    实现登录系统和输出浏览者信息是 Web 开发中非常基础的功能,可以通过 PHP 和 MySQL 来完成。 创建数据库和用户表 首先,需要创建一个 MySQL 数据库,然后创建一个用户表,包含用户名和密码的字段。可以使用以下 SQL 语句创建: CREATE DATABASE `user_db`; USE `user_db`; CREATE TABLE `us…

    PHP 2023年5月26日
    00
  • FileZilla绿色版基础使用教程

    FileZilla绿色版基础使用教程 什么是FileZilla绿色版? FileZilla是一款免费开源的FTP客户端软件,可以在Windows、Linux、macOS等操作系统上使用。它提供了一个用户友好的界面,可以让您方便地上传、下载、管理文件,支持FTP、SFTP和FTP over TLS(FTPS)等多种协议,并支持IPv6,适用于各种FTP服务器。…

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部