PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.22.3
JetBackup – Backup, Restore & Migrate v3.1.22.3
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / IO / Execute.php
backup / src / JetBackup / IO Last commit date
.htaccess 1 year ago Execute.php 1 year ago Lock.php 1 year ago Process.php 1 year ago index.html 1 year ago web.config 1 year ago
Execute.php
71 lines
1 <?php
2
3 namespace JetBackup\IO;
4
5 if (!defined( '__JETBACKUP__')) die('Direct access is not allowed');
6
7 class Execute {
8
9 public const PROC_OPEN = 'proc_open,proc_get_status';
10 public const EXEC = 'exec';
11 public const SHELL_EXEC = 'shell_exec';
12
13 const EXEC_OPTIONS = [
14 self::PROC_OPEN,
15 self::EXEC,
16 self::SHELL_EXEC,
17 ];
18
19 /**
20 *
21 */
22 private function __construct() {}
23
24 /**
25 * @param string $cmd
26 * @param array|null $output
27 * @param string|null $error
28 *
29 * @return int
30 */
31 public static function run(string $cmd, ?array &$output=null, ?string &$error=null):int {
32
33 foreach(self::getAvailable() as $option) {
34
35 switch ($option) {
36 case self::EXEC:
37 case self::PROC_OPEN:
38 if($option == self::PROC_OPEN) Process::exec($cmd, $o, $code);
39 else exec($cmd, $o, $code);
40
41 if($code) $error = implode("\n", $o);
42 else $output = $o;
43
44 return $code;
45
46 case self::SHELL_EXEC:
47 $o = shell_exec($cmd);
48 $output = $o ? explode("\n", $o) : [];
49 return $o ? 0 : 1;
50 }
51 }
52
53 $error = "No available execution function found";
54 return 1;
55 }
56
57 /**
58 * @return array
59 */
60 public static function getAvailable(): array {
61
62 $output = [];
63 foreach(self::EXEC_OPTIONS as $option) {
64 $funcs = explode(',', $option);
65 foreach ($funcs as $func) if(!function_exists($func)) continue 2;
66 $output[] = $option;
67 }
68 return $output;
69 }
70
71 }