📜  php 执行命令并显示输出 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:29.487000             🧑  作者: Mango

PHP 执行命令并显示输出

在进行Web开发中,执行系统命令是十分常见的操作,PHP提供了shell_exec函数用于执行系统命令并返回输出结果。本篇文章将介绍如何在PHP中执行命令并显示输出结果。

使用shell_exec函数执行命令

shell_exec是PHP中执行系统命令的函数。其中,函数的参数是需要执行的命令字符串,函数返回的是执行命令后的输出结果:

$output = shell_exec('ls -l');
echo "<pre>$output</pre>";

上述代码执行了ls -l命令,并将输出结果保存在变量$output中。接着,使用HTML的<pre>标签将输出结果显示在网页上。

需要注意的是,shell_exec函数会阻塞当前的PHP进程,直到命令执行完毕并返回结果。如果命令执行的时间较长,将会对整个Web应用程序的性能产生影响,因此通常建议使用异步的方式进行命令执行。

使用proc_open函数执行命令

proc_open函数是PHP的另一个用于执行系统命令的函数。与shell_exec不同的是,proc_open可以异步执行命令,并在命令执行过程中获取命令的输出结果。

$descriptorspec = array(
    0 => array("pipe", "r"),  // 标准输入流
    1 => array("pipe", "w"),  // 标准输出流
    2 => array("pipe", "w"),  // 标准错误流
);

$process = proc_open('ls -l', $descriptorspec, $pipes);

if (is_resource($process)) {
    echo "命令已执行\n";
    
    // 读取输出结果
    while ($s = fgets($pipes[1])) {
        echo $s;
    }
    
    // 关闭所有管道
    fclose($pipes[0]);
    fclose($pipes[1]);
    fclose($pipes[2]);
    
    // 等待命令执行完毕
    $return_value = proc_close($process);
    echo "命令已结束,返回值为 $return_value\n";
}

上述代码中,proc_open函数创建了一个新的进程来执行命令,并返回了一个$process资源对象。然后,通过管道来读取标准输出流的输出,并在命令执行完毕之后,使用proc_close函数关闭进程。

使用execpassthru函数执行命令

除了shell_execproc_open函数外,PHP还提供了execpassthru函数来执行系统命令。

exec函数执行命令,并将输出结果以数组的形式保存在指定变量中。如果执行成功,则返回命令的最后一行输出。如果执行失败,则返回null

exec('ls -l', $output);
foreach ($output as $line) {
    echo $line . "\n";
}

passthru函数执行命令,并将输出结果直接输出到浏览器上。

passthru('ls -l');

以上就是在PHP中执行命令并显示输出结果的方法。在实际开发中,需要根据具体情况选择最合适的方法来执行命令。