pay-now / paynow-woocommerce

WooCommerce Plugin for Paynow
https://paynow.pl
Other
12 stars 7 forks source link

ERR: cannot redeclare registered "Clue-StreamFilter-register" previously declared in "woo-MailerLite" #44

Closed 4tech-wojtek closed 3 years ago

4tech-wojtek commented 4 years ago

Witam, Zrobiłem osobne zgłoszenie, bo sama wtyczka działa, ale "gryzie się" z inną instancją zadeklarowanej funkcji. Jeśli jest wcześniej zainstalowaną wtyczką "woo-mailerlite".

Po zainstalowaniu i włączeniu wystąpił klasyczny:

W witrynie wystąpił błąd krytyczny. W wiadomości wysłanej na adres e-mail administratora strony umieszczono dodatkowe instrukcje.

Parametry witryny WP: 5.4.2 WC: 4.3.0 PHP: 7.3.19-1+0~20200612.60 + debian9 ~1.gbp6c8fe1 cURL: 7.52.1, OpenSSL/1.0.2u paynow: 1.0.12

Namierzyłem Error w logach serwera:

Got error 'PHP message: PHP Fatal error: Cannot redeclare Clue\\StreamFilter\\register() (previously declared in /www/robieto/wp-content/plugins/paynow/vendor/clue/stream-filter/src/functions.php:140) in /www/robieto/wp-content/plugins/woo-mailerlite/vendor/clue/stream-filter/src/functions.php on line 127', referer: https://robieto.pl/wp-admin/plugins.php?activate=true&plugin_status=all&paged=1&s=

Czyli w moim przypadku "gryzie się" z inną wtyczką - z MailerLite'a... chyba trzeba będzie zmienić nazwę tej funkcji, albo coś podobnego ;)

Po wyłączeniu wtyczki MailerLite'a - PayNow śmigał prawidłowo. Po ponownym włączeniu wtyczki od newslettera, oczywiście błąd serwera identyczny jak wcześniej...

Aktualnie mam jeszcze inne systemy płatności, więc PayNow może chwilkę zaczekać ;)

Zdecydowanie popieram -> Prepare official Originally posted by @4tech-wojtek in https://github.com/pay-now/paynow-woocommerce/issues/42#issuecomment-657104972

emilleszczak2 commented 4 years ago

@4tech-wojtek Nie pobieraj wtyczki z tego branch'a bo jest nieaktualny. Skorzystaj z ostatniej wersji dostępnej tutaj: https://github.com/pay-now/paynow-woocommerce/releases/latest.

Jeśli chodzi o błąd mailer-lite znamy go i zgłaszaliśmy im ten błąd, powodem jest używanie przez nich nieaktualnych bibliotek. Można samemu naprawić ten błąd:

<?php
# dla wtyczki mailer-lite
# source: /venndor/clue/stream-filter/src/functions_include.php

if (!function_exists('Clue\\StreamFilter\\append')) {
    require __DIR__ . '/functions.php';
}
4tech-wojtek commented 4 years ago

Użyłem już ostatniego/najnowszego branch'a, w trakcie zgłaszania w #42. No chyba, że teraz już jest następny - ale nie widzę.

Po zapoznaniu się z logami - od razu zrobiłem weryfikację z wtyczką MailerLite'a... Stąd to zgłoszenie ;)

Zatem, ten fragment:

<?php
# dla wtyczki mailer-lite
# source: /venndor/clue/stream-filter/src/functions_include.php

if (!function_exists('Clue\\StreamFilter\\append')) {
    require __DIR__ . '/functions.php';
}

trzeba "dokleić" do kodu we wtyczce MailerLite'a ?

Mogę małą podpowiedź - do którego pliku ? :)

emilleszczak2 commented 4 years ago

Można zrobić upgrade zależności dla wtyczki mailer-lite i powinno pomóc lub zmodyfikować powyższe pliki wraz autoload_files.php oraz autoload_static.php w katalogu vendor.

jwywiol commented 3 years ago

Witam, w wersji paynow 2.0 oraz WooCommerce - MailerLite 1.4.10 taki sam problem. Inne parametry: PHP: 7.4.8 WP: 5.6 WC: 4.8.0 Serwer współdzielony OVH

Zmodyfikowałem pliki pay-by-paynow-pl/venndor/clue/stream-filter/src/functions_include.php oraz pay-by-paynow-pl/vendor/composer/autoload_files.php

Natomiast modyfikacja w pay-by-paynow-pl/vendor/composer/autoload_static.php Powoduje inny błąd: Błąd typu E_COMPILE_ERROR został spowodowany w linii 10 pliku /home/lenacorpee/vod.grzegorzklonek/wp-content/plugins/pay-by-paynow-pl/vendor/composer/autoload_static.php. Komunikat błędu: require(): Failed opening required '/wp-content/plugins/pay-by-paynow-pl/vendor/composer/functions.php' (include_path='.:/usr/local/php7.4/lib/php:/wp-content/plugins/woocommerce-dotpay')

Czyli wygląda na to, że gryzie się z inną wtyczką: WooCommerce Dotpay Gateway 3.5.3, ale po jej wyłączeniu pojawia się inny problem w Paynow: Błąd typu E_COMPILE_ERROR został spowodowany w linii 10 pliku /wp-content/plugins/pay-by-paynow-pl/vendor/composer/autoload_static.php. Komunikat błędu: require(): Failed opening required '/wp-content/plugins/pay-by-paynow-pl/vendor/composer/functions.php' (include_path='.:/usr/local/php7.4/lib/php')

Brak modyfikacji w autoload_static.php nie powoduje błędu w Paynow, ale już w MailerLite: Błąd typu E_COMPILE_ERROR został spowodowany w linii 17 pliku /wp-content/plugins/woo-mailerlite/vendor/clue/stream-filter/src/functions.php. Komunikat błędu: Cannot redeclare Clue\StreamFilter\append() (previously declared in /wp-content/plugins/pay-by-paynow-pl/vendor/clue/stream-filter/src/functions.php:105)

Problem goni problem, proszę o pomoc w rozwiązaniu :)

emilleszczak2 commented 3 years ago

@jwywiol Problemem jest tutaj mailerlite. Mamy informacje od Klientów, że kontaktowali się z nimi. W odpowiedzi dostali informację, że nie zamierzają dokonywać aktualizacji ze względu na paynow. Jest dziwne z ich strony gdyż już poprawkę mają w swoim repozytorium z SDK, wystarczy podbić wersję SDK dla wtyczki WooCommerce.

Rozwiązania są 2:

  1. Modyfikacja wcześniej wskazanego pliku
  2. Pobranie aktualizacji do mailerlite'a z ich Githuba: https://github.com/mailerlite/woo-mailerlite/pull/29/files
jwywiol commented 3 years ago

@emilleszczak2 Pobrałem aktualizację z Githuba, działa. Dzięki ;)