Support » WooCommerce » Fataler Error bei PHP 8.0 Update in Woocommerce

  • Gelöst luckystrike71

    (@luckystrike71)


    Leider produziert meine Seite einen fatalen Error beim Update zu PHP 8.0 oder höher. Aktuelle Version ist PHP 7.4 und läuft stabil.

    WP Version: 6.1.1
    Woocommerce: 7.4.1

    Alle Themes und Plugins sind auf dem aktuellen Stand.

    Der Fehler verschwindet, sobald ich das Woocommerce Plugin deaktiviere. Es handelt sich also anscheinend um ein Problem mit dem Woocommerce Plugin. Anbei der Fehlerbericht.

    Ein Fehler vom Typ E_ERROR wurde in der Zeile 234 der 
    Datei 
    /homepages/33/12345/htdocs/clickandbuilds/xyz/wp-
    content/plugins/woocommerce/includes/class-wc-post-
    types.php verursacht. 
    Fehlermeldung: Uncaught ValueError: 
    Missing format specifier at end of string in 
    /homepages/33/12345/htdocs/clickandbuilds/xyz/wp-
    content/plugins/woocommerce/includes/class-wc-post-
    types.php:234
    • Dieses Thema wurde geändert vor 1 Jahr, 3 Monaten von luckystrike71.
    • Dieses Thema wurde geändert vor 1 Jahr, 3 Monaten von luckystrike71.
Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 41)
  • Was passiert, wenn du alle Plugins außer WooCommerce deaktivierst?

    Thread-Starter luckystrike71

    (@luckystrike71)

    Dann crasht die Seite auch mit der o.a. Fehlermeldung. Gerade eben genau so nachgestellt. Das PHP Update läuft nur durch, wenn ich Woocommerce deaktiviere. 🙁

    Der Fehler scheint im Zusammenhang mit Übersetzungen vorzukommen. Verwendest du ein Plugin zur Übersetzung? LocoTranslate, WPML, …? Hast du selber etwas an der Übersetzung geändert?

    In der Übersetzung hat es mal einen Fehler gegeben, dass All %s mit Alle % übersetzt wurde und damit der Platzhalter %s in der Übersetzung wegfällt. Das ist inzwischen korrigiert worden, aber gut möglich, dass du noch eine alte Übersetzung hast. Du könntest versuchen, in wp-content/languages/plugins/ alle Dateien mit woocommerce* zu löschen. Verschwindet damit der Fehler?

    Thread-Starter luckystrike71

    (@luckystrike71)

    Danke für deine Hilfe, das weiß ich sehr zu schätzen. Leider bin ich kein IT Experte. Wie lösche ich die o.a. Dateien? Brauche ich sowas wie einen FTP Client?

    Oder könnte ich die evt.l fehlerhafte Übersetzung mit Loco Translate korrigieren(habe das Übersetzungs Tools bisher aber nicht im einsatz gehabt)?

    • Diese Antwort wurde geändert vor 1 Jahr, 3 Monaten von luckystrike71.

    Wie lösche ich die o.a. Dateien? Brauche ich sowas wie einen FTP Client?

    Ja, entweder ein FTP-Programm wie z.B. FileZilla oder du gehst im Kundenmenü deines Webhosters auf die Dateiverwaltung.

    Wenn WordPress „merkt“, dass du WordPress auf Deutsch nutzt, die Übersetzungsdateien aber fehlen, werden die Dateien erneut vom Server geholt – ohne Übersetzungsfehler.

    Thread-Starter luckystrike71

    (@luckystrike71)

    OK das Verzeichnis habe ich gefunden. Das sind etwas über 700 Dateien JSON, MO und PO Dateien. Die kann ich alle gefahrlos löschen und die Seite funktioniert danach noch?

    Eine Datensicherung vor einem Löschen ist meist eine gute Idee 😉

    Thread-Starter luckystrike71

    (@luckystrike71)

    Ja, OK. DIe Dateien habe ich lokal gesichert. Aber kann es dennoch passieren, wenn nach dem Löschen ein Fehler auftritt, dass dieser auch nach dem Zurückspielen der Dateien bleibt? Bei schwerwiegenden Problemen wäre ich dann nämlich hilflos. 😉

    • Diese Antwort wurde geändert vor 1 Jahr, 3 Monaten von luckystrike71.

    Wenn du ein vernünftiges Backup hast, was soll passieren? Wenn es total schief läuft, Backup einspielen und alles ist wieder da.

    Thread-Starter luckystrike71

    (@luckystrike71)

    Ich habe jetzt alle Dateien gelöscht und ein PHP Update auf 8.0 durchgeführt. Leider bleibt der Fehler bestehen.

    Fatal error: Uncaught ValueError: Missing format specifier at end of string in /homepages/33/12345/htdocs/clickandbuilds/xyz/wp-content/plugins/woocommerce/includes/class-wc-post-types.php:234

    Hab ihr vielleicht noch andere Ideen?

    Nach der eigentlichen Fehlermeldung kommt noch ein „Stack Trace“ mit weiteren #9 Einträgen. Sind diese auch von Bedeutung soll ich die ganze Fehlermeldung hier nochmal posten?

    Ich danke euch!

    Ich habe jetzt alle Dateien gelöscht

    … also im Verzeichnis wp-content/languages/plugins die Dateien, die mit woocommerce anfangen?

    Nach der eigentlichen Fehlermeldung kommt noch ein „Stack Trace“ mit weiteren #9 Einträgen.

    Eine Datei enthält einen Aufrufe einer Funktion in einer anderen Datei, die wiederum Funktionen in weiteren Dateien verwendet und irgendwo in dieser Kette ist ein Fehler aufgetreten. Um den Fehler zu beurteilen, ist es immer sinnvoll, die gesamte Fehlermeldung zu posten.

    Thread-Starter luckystrike71

    (@luckystrike71)

    Ja, das waren insgesamt 729 Dateien. Nach dem Aktualisieren der Woocommerce Sprachdatenbank sind diese aber anscheinend alle wieder da.

    Hier die komplette Fehlermeldung

    Ein Fehler vom Typ E_ERROR wurde in der Zeile 234 der Datei /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-content/plugins/woocommerce/includes/class-wc-post-types.php verursacht. Fehlermeldung: Uncaught ValueError: Missing format specifier at end of string in /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-content/plugins/woocommerce/includes/class-wc-post-types.php:234
    Stack trace:
    #0 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-content/plugins/woocommerce/includes/class-wc-post-types.php(234): sprintf('Alle %', 'Bewertungen')
    #1 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-includes/class-wp-hook.php(308): WC_Post_Types::register_taxonomies('')
    #2 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
    #3 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
    #4 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-settings.php(617): do_action('init')
    #5 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-config.php(81): require_once('/homepages/33/d...')
    #6 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-load.php(50): require_once('/homepages/33/d...')
    #7 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-admin/admin.php(34): require_once('/homepages/33/d...')
    #8 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-admin/index.php(10): require_once('/homepages/33/d...')
    #9 {main}
      thrown
    Thread-Starter luckystrike71

    (@luckystrike71)

    @pixolin Hattest Du schon eine Möglichkeit dir das anzusehen?

    0 /homepages/33/d669914016/htdocs/clickandbuilds/xyz/wp-content/plugins/woocommerce/includes/class-wc-post-types.php(234): sprintf('Alle %', 'Bewertungen')

    … ist weiterhin der Fehler mit dem fehlenden s in Alle %.

    Der Original-String heißt All %s, wobei %s ein Platzhalter ist – und % nur als Text interpretiert wird. Damit passt die Funktion nicht mehr und in PHP >= 8.0 wird das als Fehler behandelt.

    Ich hatte gehofft, dass durch den Austausch der inzwischen korrigierten Sprachdateien der Fehler behoben wird. Das ist scheinbar nicht der Fall. Ohne Website-Bericht komme ich an dieser Stelle nicht weiter und … gebe auf.

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 41)
  • Das Thema „Fataler Error bei PHP 8.0 Update in Woocommerce“ ist für neue Antworten geschlossen.