nul 2>&1 &'; } } else { $cmd = \escapeshellarg($executable) . ' ' . $cmd; if ($async) { $cmd .= ' > /dev/null 2>&1 &'; } } $pipes = []; $desc = [ 1 => ['pipe', 'w'], 2 => ['pipe', 'w'], ]; $resource = \proc_open($cmd, $desc, $pipes, null, null); if ($resource === false) { throw new \Exception(); } $stdout = ''; $stderr = ''; if ($async) { \stream_set_blocking($pipes[1], false); \stream_set_blocking($pipes[2], false); } else { $stdout = \stream_get_contents($pipes[1]); $stderr = \stream_get_contents($pipes[2]); } foreach ($pipes as $pipe) { \fclose($pipe); } $status = \proc_close($resource); if ($status == -1) { throw new \Exception((string) $stderr); } $lines = \trim($stdout === false ? '' : $stdout); $lineArray = \preg_split('/\r\n|\n|\r/', $lines); $lines = []; if ($lineArray === false) { return $lines; } foreach ($lineArray as $line) { $temp = \preg_replace('/\s+/', ' ', \trim($line, ' ')); if (!empty($temp)) { $lines[] = $temp; } } return $lines; } }