UNPKG

manual-php

Version:
155 lines (107 loc) 2.81 kB
# 程序执行 * [escapeshellarg - 把字符串转码为可以在 Shell 命令里使用的参数](#escapeshellarg) * [escapeshellcmd - Shell 元字符转义](#escapeshellcmd) * [exec - 执行一个外部程序](#exec) * [passthru - 执行外部程序并且显示原始输出](#passthru) * [proc_close - 关闭由 proc_open 打开的进程并且返回进程退出码](#procclose) * [proc_get_status - 获取由 proc_open 函数打开的进程的信息](#procgetstatus) * [proc_nice - 修改当前进程的优先级](#procnice) * [proc_open - 执行一个命令,并且打开用来输入 / 输出的文件指针](#procopen) * [proc_terminate - 终止由 proc_open 打开的进程](#procterminate) * [shell_exec - 通过 Shell 环境执行命令,并且将完整的输出以字符串的方式返回](#shellexec) * [system - 执行外部程序,并且显示输出](#system) ## escapeshellarg ```php <?php var_dump(escapeshellarg('foo')); // string(5) ""foo"" ``` ## escapeshellcmd ```php <?php var_dump(escapeshellarg('&#;`|*?~<>^()[]{}$\%!')); // string(23) ""&#;`|*?~<>^()[]{}$\ "" ``` ## exec ```php <?php var_dump(exec('dir')); var_dump(exec('dir', $foo)); var_dump($foo); var_dump(exec('dir', $foo, $bar)); var_dump($foo, $bar); ``` ## passthru ```php <?php passthru('dir'); passthru('dir', $foo); var_dump($foo); ``` ## proc_close ```php <?php $descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['file', __DIR__ . '/error.log', 'a'] ]; $process = proc_open('php', $descriptorspec, $pipes, __DIR__); var_dump(proc_close($process)); ``` ## proc_get_status ```php <?php $descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['file', __DIR__ . '/error.log', 'a'] ]; $process = proc_open('php', $descriptorspec, $pipes, __DIR__); var_dump(proc_get_status($process)); ``` ## proc_nice ```php <?php var_dump(proc_nice(-20)); var_dump(proc_nice(20)); ``` ## proc_open ```php <?php $descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['file', __DIR__ . '/error.log', 'a'] ]; $process = proc_open('php', $descriptorspec, $pipes, __DIR__); var_dump($process); if (is_resource($process)) { fwrite($pipes[0], '<?php echo 2 + 3; ?>'); fclose($pipes[0]); var_dump(stream_get_contents($pipes[1])); // string(1) "5" fclose($pipes[1]); var_dump(proc_close($process)); } ``` ## proc_terminate ```php <?php $descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['file', __DIR__ . '/error.log', 'a'] ]; $process = proc_open('php', $descriptorspec, $pipes, __DIR__); var_dump(proc_terminate($process)); ``` ## shell_exec ```php <?php var_dump(shell_exec('dir')); ``` ## system ```php <?php var_dump(system('dir')); var_dump(system('dir', $foo)); var_dump($foo); ```