manual-php
Version:
155 lines (107 loc) • 2.81 kB
Markdown
# 程序执行
* [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
var_dump(escapeshellarg('foo')); // string(5) ""foo""
```
## escapeshellcmd
```php
var_dump(escapeshellarg('&#;`|*?~<>^()[]{}$\%!')); // string(23) ""&#;`|*?~<>^()[]{}$\ ""
```
## exec
```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
passthru('dir');
passthru('dir', $foo);
var_dump($foo);
```
## proc_close
```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
$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
var_dump(proc_nice(-20));
var_dump(proc_nice(20));
```
## proc_open
```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
$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
var_dump(shell_exec('dir'));
```
## system
```php
var_dump(system('dir'));
var_dump(system('dir', $foo));
var_dump($foo);
```