PHP 7.2 auf PHP7.4 -> Wordpress -> Fehler

Gast #6506235
Lesenswert?

Hallo Leute,

Folgendes Szenario:
Mein Hoster dreht bald den PHP 7.2 Support ab.
Also schnell mal die PHP Einstellung auf 7.4 geändert.

Resultat:
1
Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /homepages/5/e635618891/htdocs/XXXXXXXXX/wp-content/plugins/user-access-manager/src/Util/Util.php on line 100

Das Plugin heisst "User Access Manager" und wird leider nicht mehr 
gepflegt.
Es ist sehr einfach zu bedienen und damit mein "Traumplugin", was die 
Zuriffsbeschränkung auf eine Seite darstellt.

Daher wollte ich mir mal das PHP Script anschauen.

Zeile 100 sieht wie folgt aus:
1
 $secure = empty($_SERVER['HTTPS']) ? '' : ($_SERVER['HTTPS'] === 'on') ? 's' : '';

Die ganze Funktion wie folgt:
1
 /**
2
     * Returns the current url.
3
     *
4
     * @return string
5
     */
6
    public function getCurrentUrl()
7
    {
8
        if (isset($_SERVER['REQUEST_URI']) === false) {
9
            $serverRequestUri = $_SERVER['PHP_SELF'];
10
        } else {
11
            $serverRequestUri = $_SERVER['REQUEST_URI'];
12
        }
13

14
        $secure = empty($_SERVER['HTTPS']) ? '' : ($_SERVER['HTTPS'] === 'on') ? 's' : '';
15
        $protocols = explode('/', strtolower($_SERVER['SERVER_PROTOCOL']));
16
        $protocol = $protocols[0].$secure;
17
        $port = ((int)$_SERVER['SERVER_PORT'] === 80) ? '' : (':'.$_SERVER['SERVER_PORT']);
18

19
        return $protocol.'://'.$_SERVER['SERVER_NAME'].$port.$serverRequestUri;
20
    }

Hat jemand eine Idee, wie ich das wieder zum laufen bekomme?

Sollte >7.4 kompatibel sein und auch mal PHP 8.0 können.

Würde mich über ein Feedback freuen und
verbleibe mfg,
verzw
Gast #6506287
Lesenswert?

verzw schrieb:
> Und wie sollte das dann aussehen?
1
$secure = @$_SERVER['HTTPS'] === 'on' ? 's' : '';

Aber ich würde den "User Access Manager" entfernen. Ist die einzige 
sichere & permanente Lösung. Noch besser, das ganze Wordpress 
entfernen/ersetzen. Ich höre static pages sind wieder in.
Gast #6506484
Lesenswert?

Brauche doch nochmals eure Hilfe.
Der Fehler diesmal:
1
Deprecated: Function create_function() is deprecated in /homepages/5/e635618891/htdocs/XXXXXXXXX/wp-content/plugins/above-the-fold-optimization/includes/proxy.class.php on line 152

In Zeile 152 steht folgendes:
1
create_function('$value', 'return trim($value) !== "";')

Die ganze Funktion sieht wie folgt aus:
1
 // merge default include / exclude list with settings
2
            $this->$key = array_unique(
3
                array_filter(
4
                    array_merge($this->$key, ((isset($this->CTRL->options[$params[0] . '_proxy_' . $params[1]]) && is_array($this->CTRL->options[$params[0] . '_proxy_' . $params[1]])) ? $this->CTRL->options[$params[0] . '_proxy_' . $params[1]] : array())),
5
                    create_function('$value', 'return trim($value) !== "";')
6
                )
Gast #6506585
Lesenswert?

Also wenn du den Code komplett "ent-deprecaten" willst, dann kommst du 
nicht darum dich intensiver mit PHP auseinanderzusetzen. Das sieht 
allerdings echt nach ziemlichem Spaghetticode aus, vielleicht ist es 
besser sich da nach einer neuen Loesung umzusehen die noch gewartet 
wird.
Gast #6506873
Lesenswert?

ich muss nur die paar zeilen hier gesehen haben, um meinen jahrzehnte 
alten hass auf wordpress wieder aufleben zu lassen. der code ist einfach 
zum kotzen hässlich...

der kurzen rede noch kürzerer sinn: wenn du das problem beheben willst, 
dann musst du:
- entweder die plugins selber umbauen/neu schreiben oder
- die plugins wegwerfen und durch andere (aktuellere) ersetzen
Beitrag #6522115 wurde von einem Moderator gelöscht.
Gast #6525325
Lesenswert?

Dann ändere Zeile 100 doch wie gefordert:

$secure = empty($_SERVER['HTTPS']) ? '' : (($_SERVER['HTTPS'] === 'on') 
? 's' : '');

wobei ich das anders schreiben würde:

$secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 
's' : '';
#6527926
Lesenswert?

der andere Klaus schrieb:
> Wordpress ist sowieso ein einziges Sicherheitsrisiko, in den letzten
> Jahren hunderte Schwachstellen, die ständig angegriffen werden: ich habe
> das länsgt entsorgt

Das halte ich für ein Gerücht und es ist einfach pauschaliert. Aber als 
Betreiber muss ich mich selbstverständlich um zeitnahes Schließen von 
bekanntgewordenen Lücken kümmern. 
(https://www.heise.de/security/meldung/Contact-Form-7-Datepicker-Gefaehrliches-WordPress-Plugin-ohne-Support-4696045.html)

Was gefährlich ist: PHP Code Schreiben ohne die Folgen abschätzen zu 
können...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren