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

当编写 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析构函数。 PHP析构函数是在一个对象不再被使用时自动调用的特殊函数。当对象被销毁时,PHP会自动调用析构函数以执行清理工作,例如关闭数据库连接或文件、释放内存等。 下面是一个简单的示例,展示了如何创建和使用PHP析构函数: class MyClass { public $name; public function __const…

    PHP 2023年5月27日
    00
  • PHP查找数组中只出现一次的数字实现方法【查找特定元素】

    PHP查找数组中只出现一次的数字实现方法【查找特定元素】攻略: 问题描述 给定一个整数数组,在该数组中只有一个元素出现了一次,其它元素均出现了两次。请找出只出现一次的那个数字。 实现步骤 创建一个空数组,用于存放不重复的元素; 遍历给定的整数数组,对于每个元素: 如果该元素已经在新数组中,就从新数组中移除该元素; 如果该元素不在新数组中,就将该元素加入新数组…

    PHP 2023年5月26日
    00
  • php实现微信和支付宝支付的示例代码

    下面是PHP实现微信和支付宝支付的示例代码的完整攻略。 一、微信支付 1. 获取微信支付相关信息 1.1. 微信支付功能准备 在开始使用微信支付之前,需要开通微信支付的相关功能,具体流程如下: 注册成为微信商户,https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2Findex.ph…

    PHP 2023年5月23日
    00
  • php foreach正序倒序输出示例代码

    当我们需要遍历一个数组中的元素,可以使用foreach循环来实现。 foreach循环的语法如下: foreach ($array as $value) { // 处理循环里的语句 } 其中,$array 表示要遍历的数组变量名,$value 表示当前循环到的数组元素值。在循环中可以对 $value 进行一些操作或输出等处理。 想要控制元素输出的顺序,可以使…

    PHP 2023年5月26日
    00
  • 浅析PHP页面局部刷新功能的实现小结

    浅析PHP页面局部刷新功能的实现小结 简介 页面局部刷新是指页面上只有一部分内容发生改变,而其余部分不发生改变的一种刷新方式。相对于整个页面刷新,局部刷新可以提升用户体验,减少资源浪费。 在PHP中,实现页面局部刷新的方式有很多种,本文将对其中一些主要的方式进行分析和总结。 1. Ajax Ajax(Asynchronous JavaScript and X…

    PHP 2023年5月27日
    00
  • 使用phpQuery获取数组的实例

    获取数组是PHP开发中非常常见的操作。本文将详细讲解如何使用phpQuery获取数组。 准备工作 在使用phpQuery获取数组之前,需要先安装phpQuery。可以通过官方网站进行下载和安装。 使用phpQuery获取数组 示例一:获取网页中所有链接 下面是获取网页中所有链接的代码示例: require_once(‘phpQuery/phpQuery.ph…

    PHP 2023年5月26日
    00
  • php生成用户密码的两种方式

    下面是PHP生成用户密码的两种方式的具体攻略: 方式一:使用PHP内置函数password_hash() 使用PHP内置函数password_hash()生成密码是一种比较常用的方式。password_hash()函数能够帮助我们生成安全的哈希密码,同时也自动进行加盐操作,避免了简单的hash被彩虹表破解。 代码示例 <?php $password =…

    PHP 2023年5月26日
    00
  • php数组函数序列之array_keys() – 获取数组键名

    首先,需要明确什么是PHP中的数组。数组是一种保存多个值的有序集合的数据结构,在PHP中可以通过以下方式定义一个数组: $array = array("foo" => "bar", "bar" => "foo"); 其中,键和值之间可以用”=>”或者”:”分隔,…

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