Definiere Markierungen für veraltete, Beta und Standardversion von PHP
Bernd Wurst

Bernd Wurst commited on 2018-07-18 20:56:31
Zeige 2 geänderte Dateien mit 33 Einfügungen und 11 Löschungen.

... ...
@@ -146,6 +146,8 @@ $phpoptions = "<h5>PHP</h5>
146 146
       $options[$tag] = 'PHP '.$info['major'].'.'.$info['minor'];
147 147
       if ($info['status'] == 'deprecated') {
148 148
           $options[$tag] .= ' (veraltet)';
149
+      } elseif ($info['status'] == 'beta') {
150
+          $options[$tag] .= ' (Testversion)';
149 151
       } elseif ($info['status'] == 'used') {
150 152
           $options[$tag] .= ' (nur Bestandsschutz)';
151 153
       }
... ...
@@ -24,18 +24,33 @@ require_once("certs.php");
24 24
 
25 25
 
26 26
 function valid_php_versions() {
27
+    /* In der konfiguration ist die Variable "php_versions" eine kommaseparierte Liste der unterstützten Versionen.
28
+        Dabei gelten folgende Suffixe (nicht kombinierbar!):
29
+            *: Standardversion für neue Konfigurationen
30
+            /: Deprecated
31
+            +: Beta-Version
32
+    */
27 33
     $tags = explode(',', config('php_versions'));
28 34
     $ret = array();
29 35
     foreach ($tags as $t) {
30
-        $key = str_replace('*', '', $t);
31
-        $ret[$key] = array('major' => null, 'minor' => null, 'status' => 'regular');
36
+        $key = $t;
37
+        $ver = array('major' => null, 'minor' => null, 'status' => 'regular', 'default' => false);
38
+        if (substr($t, -1, 1) == '+') {
39
+            $ver['status'] = 'beta';
40
+            $key = substr($t, 0, -1);
41
+        } elseif (substr($t, -1, 1) == '/') {
42
+            $ver['status'] = 'deprecated';
43
+            $key = substr($t, 0, -1);
44
+        } elseif (substr($t, -1, 1) == '*') {
45
+            $ver['default'] = true;
46
+            $key = substr($t, 0, -1);
47
+        }
48
+
32 49
         /* Wir nehmen an, dass unsere Tags immer an zweitletzter Stelle die Major-Version und 
33 50
         an letzter Stelle die Minor-Version enthalten */
34
-        $ret[$key]['major'] = substr(str_replace('*', '', $t), -2, 1);
35
-        $ret[$key]['minor'] = substr(str_replace('*', '', $t), -1, 1);
36
-        if (substr($t, -1) === '*') {
37
-            $ret[$key]['status'] = 'deprecated';
38
-        }
51
+        $ver['major'] = substr($key, -2, 1);
52
+        $ver['minor'] = substr($key, -1, 1);
53
+        $ret[$key] = $ver;
39 54
     }
40 55
     /* Bis hier: aus der Datenbank ausgelesen */
41 56
     DEBUG($ret);
... ...
@@ -44,12 +59,11 @@ function valid_php_versions() {
44 59
     foreach ($list as $vhost) {
45 60
         if ($vhost['php'] && !array_key_exists($vhost['php'], $ret)) {
46 61
             $key = $vhost['php'];
47
-            $ret = array($key => array('major' => null, 'minor' => null, 'status' => 'regular')) + $ret;
62
+            $ret = array($key => array('major' => null, 'minor' => null, 'status' => 'used', 'default' => false)) + $ret;
48 63
             /* Wir nehmen an, dass unsere Tags immer an zweitletzter Stelle die Major-Version und 
49 64
             an letzter Stelle die Minor-Version enthalten */
50 65
             $ret[$key]['major'] = substr($key, -2, 1);
51 66
             $ret[$key]['minor'] = substr($key, -1, 1);
52
-            $ret[$key]['status'] = 'used';
53 67
         }
54 68
     }
55 69
     return $ret;
... ...
@@ -118,8 +132,14 @@ function empty_vhost()
118 132
 
119 133
     $vhost['homedir'] = $_SESSION['userinfo']['homedir'];
120 134
     $vhost['docroot'] = null;
121
-    $phpversions = explode(',', config('php_versions'));
122
-    $vhost['php'] = end($phpversions);
135
+
136
+    $vhost['php'] = null;
137
+    $phpversions = valid_php_versions();
138
+    foreach ($phpversions as $tag => $info) {
139
+        if ($info['default']) {
140
+            $vhost['php'] = $tag;
141
+        }
142
+    }
123 143
     $vhost['cgi'] = 1;
124 144
     $vhost['ssl'] = null;
125 145
     $vhost['hsts'] = -1;
126 146