Neu Fataler Fehler bei Installation

DarkClown

Aktives Mitglied
16. Juli 2019
99
15
Ich versuche gerade eine Probeinstallation für einen Neukunden, der die Anbindung seines WooCommerce Shops an die WaWi haben möchte. Das WP System ist frisch aufgesetzt. Erhalte aber bereits bei dem Versuch der Installation des WooCommerce JTL WaWi Connector PlugIns die Meldung "Das Plugin kann nicht aktiviert werden, da es einen fatalen Fehler erzeugt."
Das ist alles andere als ermutigend. Folgendes wurde als Fehlermeldung übermittelt:

WordPress-Version 6.4.1
Aktives Theme: Botiga Child (Version 1.0)
Aktuelles Plugin: WooCommerce JTL-Connector (Version 1.41.1)
PHP-Version 8.1.26

Fehler-Details
==============
Ein Fehler vom Typ E_ERROR wurde in der Zeile 359 der Datei /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php verursacht. Fehlermeldung: Uncaught Error: Non-static method JtlWooCommerceConnector\Utilities\Db::checkIfFKExists() cannot be called statically in /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php:359
Stack trace:
#0 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php(156): JtlConnectorAdmin::createManufacturerLinkingTable()
#1 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php(2023): JtlConnectorAdmin::activate_linking()
#2 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php(833): JtlConnectorAdmin::update()
#3 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php(536): JtlConnectorAdmin::init_hooks()
#4 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-includes/class-wp-hook.php(324): JtlConnectorAdmin::init()
#5 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#6 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-includes/plugin.php(517): WP_Hook->do_action()
#7 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-settings.php(643): do_action()
#8 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-config.php(105): require_once('/homepages/15/d...')
#9 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-load.php(50): require_once('/homepages/15/d...')
#10 /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-admin/admin-ajax.php(22): require_once('/homepages/15/d...')
#11 {main}
thrown

Irgendeine Idee? SInd schlechte Voraussetzungen dem Kunden die Integration zu verkaufen ...
Danke Euch schon mal für die Unterstützung.
Grüße, TImo
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Ohne irgendwas über Woocommerce bzw. dieses Plugin zu wissen, würde ich aufgrunde des Textes in der Fehlermeldung sagen, dass hier versucht wird die Methode checkIfFKExists() der Klasse JtlWooCommerceConnector\Utilities\Db mit :: aufzurufen

PHP 8 erlaubt es aber nicht mehr, nicht-statische Methoden mit dem statischen Operator aufzurufen.

... und siehe da https://wordpress.org/plugins/woo-jtl-connector/ -> hier steht: ATTENTION: PHP 8.1 is NOT Supported
 

DarkClown

Aktives Mitglied
16. Juli 2019
99
15
Hallo Michael,

Danke Dir für die Antwort. Mir ist tatsächlich entgangen, daß im Text unten steht, daß PHP 8.1 nicht supported ist - (was auch falsch zu sein scheint) seien wir präzise: 8.x!. Im Kopf der PlugIn Beschreibung steht nämlich tatsächlich "PHP Version: 4.7 or higher"
Unabhängig davon habe ich PHP jetzt auf 8.0 zurückgefahren und der Fehler besteht weiterhin (schreibst Du aber ja selber, daß mit PHP 8 generell eine Änderung vorgenommen wurde). Aber selbst PHP 8.0 Version wird nur bis 12/23 unterstützt. Ältere, gar nicht mehr unterstützte Versionen, muss ich kostenpfichtig (8€/Monat) bei meinem Hoster bestellen - da wollen selbst die also schon gar nix mehr mit zu tun haben.

(...) Hab den Inhalt hier nachträglich geändert.
Wie es aussieht, ist eine (Beta?) Version für aktuelle PHP Versionen verfügbar. Ich habe die Beta 1.40 Beta 3 vom Juli (mit Unterstützung für PHP 8.1) versucht zu installieren, erhalte aber trotzdem eine fatalen Fehler.
Allerdings scheint die 1.40.2 bei einigen mit PHP 8.2 zu funktionieren. Es scheint, daß die produktive Version 1.41 diese PHP 8 Unterstützung noch nicht enthält , da die Fehlermeldung auf Inkompatibilität schließen lässt:

Uncaught Error: Non-static method JtlWooCommerceConnector\Utilities\Db::checkIfFKExists() cannot be called statically in /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php:359

Allerdings zeigt auch die letzte Beta für PHP 8 (diese zeigt übrigens immer noch die Version 1.39) den gleichen Fehler.:

Uncaught Error: Non-static method JtlWooCommerceConnector\Utilities\Db::checkIfFKExists() cannot be called statically in /homepages/15/d67026057/htdocs/clickandbuilds/WordPressTest/wp-content/plugins/woo-jtl-connector/includes/JtlConnectorAdmin.php:355
 
Zuletzt bearbeitet:

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Es ist echt komisch, dass bei angegebener Unterstützung für PHP 8 immernoch der Fehler bezüglich der statisch aufgerufenen Funktionen kommt.
Da du sagst, dass das Plugin bei anderen funktioniert, liegt es ja vielleicht nur an dieser einen checkIfFKExists() Funktionen und die wird vielleicht gar nicht immer ausgeführt (und zufälligerweise eben bei den anderen nicht).

Vielleicht kannst du das Plugin selbst mal testweise mal abändern.
Wenn es eine Klasseninstanz im gleichen Bereich gibt, wäre der Aufruf anstatt Db::checkIfFKExists() dann $db->checkIfFKExists()
und falls noch kein instanziiertes Klassenobjekt vorhanden ist, dann musst du erst eine Instanz erzeugen: (new Db())->checkIfFKExists()
 

DarkClown

Aktives Mitglied
16. Juli 2019
99
15
Hallo Michael, danke Dir für die Antwort.
Ich bin jetzt kein PHP Experte. Hab mal versucht die entsprechende Stelle in der Quelldatei Deinem Vorschlag in der JTLConnectorAdmin.php entsprechend abzuändern: (bei ziemlicher Ahnungslosigkeit über das, was ich da mache)


if (
(new Db())->checkIfFKExists()
$db->checkIfFKExists(
/* !DB::checkIfFKExists( */
$wpdb->prefix . 'jtl_connector_link_manufacturer',
'jtl_connector_link_manufacturer_1'
)
) {
$wpdb->query("
ALTER TABLE `{$wpdb->prefix}jtl_connector_link_manufacturer`
ADD CONSTRAINT `jtl_connector_link_manufacturer_1` FOREIGN KEY (`endpoint_id`)
REFERENCES `{$wpdb->terms}` (`term_id`) ON DELETE CASCADE ON UPDATE NO ACTION");
}

Problem bleibt aber bestehen.
 

DarkClown

Aktives Mitglied
16. Juli 2019
99
15
Parse error: syntax error, unexpected variable "$db"
ich hab zur Sicherheit nochmal (new db())->checkIfFKExists() draus gemacht (wenn groß/klein) relevant ist - ändert aber nichts
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
...bei ziemlicher Ahnungslosigkeit über das, was ich da mache....
Dann solltest du es besser lassen, bzw. erst versuchen, die Fehlermeldung und die grundsätzliche Funktion des Connectors zu verstehen.
Auf jeden Fall nicht einfach irgendwelche Codeschnipsel, die irgendjemand im Forum postet reinkopieren und ausführen.
War ein schlechter Rat - Sorry
 

DarkClown

Aktives Mitglied
16. Juli 2019
99
15
Naja, passieren kann da nix. Insofern war es einen Versuch wert. Kann höchstens dazulernen 😉
 

Ähnliche Themen