程序执行
escapeshellarg
<?php
var_dump(escapeshellarg('foo'));
escapeshellcmd
<?php
var_dump(escapeshellarg('&#;`|*?~<>^()[]{}$\%!'));
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]));
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);