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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.