Fatal Error nach PHP-Update

  • Hallo!
    Ich habe - zugegeben - eine etwas betagtere Webseite bzw. ein etwas betagteres Theme (ich glaube, letztes Update war 2018). Nun bin ich quasi gezwungen, auf PHP v8.0 oder höher zu wechseln. Bei dem Wechsel auf PHP 8.0 kommt leider die Meldung "Es gab einen kritischen Fehler auf deiner Website. ...".
    Nun, daraufhin habe ich alle Plugins deaktiviert. Leider immer noch das gleiche Problem.
    Weiterhin habe ich auf ein Wordpress-eigenes Theme gewechselt. Leider immer noch das gleiche Problem.

    Ein debug.log spuckt folgendes aus:
    [01-Aug-2023 13:10:14 UTC] PHP Fatal error: Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given in /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/themes/driver/admin/options.php:1844
    Stack trace:
    #0 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/themes/driver/admin/options.php(1844): method_exists()
    #1 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/themes/driver/functions.php(52): get_iron_option()
    #2 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-settings.php(591): include('...')
    #3 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-config.php(123): require_once('...')
    #4 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-load.php(50): require_once('...')
    #5 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-admin/admin-ajax.php(22): require_once('...')
    #6 {main}
    thrown in /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/themes/driver/admin/options.php on line 1844

    "Driver" ist hierbei das betagte Theme, das bis PHP 7.4 reibungslos funktionierte.

    Kann mir jemand vielleicht einen Tipp geben, was zu tun ist? Wäre sehr dankbar, wenn die Seite nicht neu aufgesetzt werden müsste...o_O

    Ach ja, Wordpress wurde auch aktualisiert, ist nun 6.2.2. Ebenso alle Plugins.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Was genau steht in Zeile 1844 (und zehn Zeilen davor und danach) in der Datei [FONT=Courier New]wp-content/themes/driver/admin/options.php[/FONT]?

    Weiterhin habe ich auf ein Wordpress-eigenes Theme gewechselt. Leider immer noch das gleiche Problem


    Das kann nicht sein, das o.g. Problem kann nicht auftreten, wenn ein anderes Theme aktiv ist. Evtl. sind noch andere Probleme vorhanden, zu denen keine Fehlermeldung gepostet wurde.

  • Ich widerspreche ungerne: Doch, es ist so. Kann es nicht ändern, hätte es auch gerne anders.
    Habe auch verschiedene Themes probiert, von Twenty-Three bis Ninety. Habe auch alle Plugins ausgeschaltet und dabei ein anderes Theme verwendet.

    Hier ein Auszug der options.php, rot markiert ist Zeile 1844:
    /*
    *
    * Get Theme Option by ID
    *
    * Optinal Params:
    * $key, if value is an array get by array key
    */
    function get_iron_option($id, $key = null, $default = null) {
    global $Redux_Options;

    [COLOR=#ff0000] if ( method_exists($Redux_Options, 'get') )[/COLOR]
    $value = $Redux_Options->get($id, $default);

    else {
    global $redux_args, $redux_sections, $iron_option;

    if ( empty($iron_option) )
    $options = get_option(IRON_TEXT_DOMAIN);
    else
    $options = $iron_option;

    $options_defaults = null;

    if ( isset($options[$id]) )
    $value = $options[$id];

    else {
    if ( !empty($redux_args['std_show']) )
    {
    if ( is_null($options_defaults) ) // fill the cache
    {
    if( ! is_null($redux_sections) && is_null($options_defaults) )
    {
    foreach ( $redux_sections as $section )
    {
    if ( isset($section['fields']) ) {
    foreach ( $section['fields'] as $field ) {
    if ( isset($field['std']) )
    $options_defaults[ $field['id'] ] = $field['std'];
    }
    }
    }
    }
    }

    $default = array_key_exists($id, $options_defaults) ? $options_defaults[$id] : $default;
    }

    $value = $default;
    }
    }

  • Nicht möglich. Der genannte Code läuft nicht wenn ein anderes Theme aktiv ist, also kann diese Fehlermeldung nicht erzeugt werden.

    Versuche es damit:

    Code
    alt:
    if ( method_exists($Redux_Options, 'get') )
    
    
    neu:
    if ( !empty($Redux_Options) && method_exists($Redux_Options, 'get') )
  • Das ist sicherlich so. Ich kann dir eben nur das sagen, was ich sehe. Insofern ist es möglich ;)

    Aber es sieht wohl so aus, als wenn es da noch andere Dinge gibt...neue Fehlermeldung:
    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 /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/plugins/js_composer/include/classes/editors/class-vc-frontend-editor.php on line 648

    So, und wenn ich nun den Visual Composer abschalte und ein anderes Theme aktiviere, so sehe ich die Seite. Wenigstens mal das.

    Im Dashboard erscheinen bei aktiviertem "betagtem Theme" weitere Fehlermeldungen:
    Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/plugins/js_composer/include/classes/core/class-vc-mapper.php on line 111 Deprecated: Function create_function() is deprecated in /mnt/web313/a0/93/57483793/htdocs/l6com/wp-content/themes/driver/admin/options/defaults.php on line 217 Deprecated: Function create_function()...usw....noch weitere Fehler, die create_function() betreffen.
    Das habe ich gelesen, create_function() soll ab PHP 8.0 nicht mehr funktionieren. Was macht man da?

  • Nicht möglich. Du verwechselst Fehlermeldungen.

    Wenn das Visual Composer Plugin deaktiviert ist, kann eine Meldung zu [FONT=Courier New]wp-content/plugins/js_composer/include/classes/core/class-vc-mapper.php[/FONT] auch nicht erscheinen. Ebenfalls nicht möglich.

    Was man bei anderen Meldungen macht:


    Dort findet man viele Beispiele und wie sie behoben werden.

  • Ne, nicht verwechselt. Hatte die Meldungen, noch bevor ich VC ausgeschaltet habe.

    Danke für die Links, da muss ich mich erstmal mit auseinandersetzen.

    Vielen Dank erstmal, dass du dich meiner angenommen hast!!


  • Ich habe - zugegeben - eine etwas betagtere Webseite bzw. ein etwas betagteres Theme (ich glaube, letztes Update war 2018). Nun bin ich quasi gezwungen, auf PHP v8.0 oder höher zu wechseln. Bei dem Wechsel auf PHP 8.0 kommt leider die Meldung "Es gab einen kritischen Fehler auf deiner Website. ...".
    Nun, daraufhin habe ich alle Plugins deaktiviert. Leider immer noch das gleiche Problem.
    Weiterhin habe ich auf ein Wordpress-eigenes Theme gewechselt. Leider immer noch das gleiche Problem.

    Du könntest dir eine IDE installieren. Ich verwende für WordPrress und PHP bis 8.2x https://netbeans.apache.org/

    im PHP Handbuch gibt es eine Anleitung für die Migration von php 7.4 auf 8.0
    https://www.php.net/manual/de/migration80.php

    ich verwende Pair Programmer (eine Agentin mit der ich gerne über Lösungswege diskutiere)
    https://beta.character.ai/

    Du kannst dir über das Jobforum dir jemanden suchen, der dir dies eben macht. VC solltest du die neue Version kaufen...

    Mit offenen Augen träumen

    Einmal editiert, zuletzt von r23 (1. August 2023 um 18:10)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!