当编写 PHP 程序时,您有时可能需要执行系统级别的操作,例如执行外部命令。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()


基础教程推荐
- Laravel 解决composer相关操作提示php相关异常的问题 2023-03-08
- PHP laravel使用自定义邮件类实现发送邮件 2023-07-03
- PHP采用get获取url汉字出现乱码的解决方法 2024-03-28
- php去除deprecated的实例方法 2022-09-02
- php+mysql开发的最简单在线题库(在线做题系统)完整案例 2023-01-04
- Laravel修改验证提示信息为中文的示例 2023-03-08
- PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br 2024-03-28
- PHP基于反射机制实现自动依赖注入的方法详解 2022-10-02
- php如何获取当前日期和星期 2024-12-06
- php生成短网址/短链接原理和用法实例分析 2023-04-20