PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.18.8
JetBackup – Backup, Restore & Migrate v3.1.18.8
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 5 months ago Execute.php 5 months ago Lock.php 5 months ago Process.php 5 months ago index.html 5 months ago web.config 5 months 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 }