Forum: PC-Programmierung PHP 7.2 auf PHP7.4 -> Wordpress -> Fehler


von verzw (Gast)


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

: Verschoben durch Admin
von Andreas (Gast)


Lesenswert?

Meine PHP-Zeit ist lange her, aber dieser Teil des Codes scheint mir 
überflüssig zu sein und sollte einfach entfernt werden können: 
ˋempty($_SERVER['HTTPS']) ? '' : ˋ

von Karl Klammer (Gast)


Lesenswert?

Setz Klammern. Steht ja exakt da in der Fehlermeldung.

von verzw (Gast)


Lesenswert?

Karl Klammer schrieb:
> Setz Klammern. Steht ja exakt da in der Fehlermeldung.

Und wie sollte das dann aussehen?

von 🐧 DPA 🐧 (Gast)


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.

von verzw (Gast)


Lesenswert?

🐧 DPA 🐧 schrieb:
> $secure = @$_SERVER['HTTPS'] === 'on' ? 's' : '';

GEHT!
Sehr gut. Dankeschön :-)

von verzw (Gast)


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
                )

von Andreas (Gast)


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.

von quotendepp (Gast)


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

von Weinbauer (Gast)


Lesenswert?


Beitrag #6522115 wurde von einem Moderator gelöscht.
von werists (Gast)


Lesenswert?

verzw schrieb:
> Das Plugin heisst "User Access Manager" und wird leider nicht mehr
> gepflegt.  Es ist sehr einfach zu bedienen
Vermutlich auch einfach zu hacken.

von der andere Klaus (Gast)


Lesenswert?

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

von ThomasW (Gast)


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' : '';

von Uwe D. (monkye)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.