• Hi,
    ich habe das Problem das mit das Plugin nach dem Einrichten und Aktivieren der Statistik einen Fehler anzeigt. “Statistik: Fehler
    Fehler im Backend.”

    Ebenso zählt der Counter nicht hoch. Ich habe mal geschaut und der Cache-Order wurde richtig angelegt unter wp-content/uploads/shariff3uu_cache so wie es auch auf den Screenshots zu sehen ist.

    Es gibt auch beim Laden ab und zu Probleme, dass die Icons (sowie sehr viele andere Bilder) geladen werden bzw. es dauert eine ganze Weile, dies passiert öfter mal das die Seite langsam lädt. Habe mal das Modul deaktiviert und die Seite lädt wunderbar. Ich habe das w3 total chache plugin und hatte es aber auch komplett ausgeschaltet weil ich dachte das es vielleicht am Caching und Minify liegt. Allerdings hat dies den Fehler auch nicht behoben.

    Was könnte es sein?

    URL: blog.universum.com

    https://ww.wp.xz.cn/plugins/shariff/

Viewing 14 replies - 1 through 14 (of 14 total)
  • Plugin Author Jan-Peter

    (@starguide)

    Hallo shogathu,

    tut mir Leid, dass es bei euch zu Problemen kommt. Schauen wir einmal, ob wir die Ursache eingrenzen können. Erst einmal grundsätzlich zur Funktionsweise: Das WordPress-Plugin erstellt nach den Vorgaben in den Einstellungen den HTML-Code für die Shariff-Buttons und bindet die Skripte ein. Bis dahin soweit alles gut. Das Shariff-JavaScript von Heise nimmt dann diesen und baut die Buttons inkl. Zähler dazu. Dazu ruft es das eigene PHP-Backend auf, welches die Zählerstände bei den jeweiligen Netzwerke abfragt und zurückgibt sowie den Cache verwaltet.

    Wir haben diverse Abfragen vor dem eigentlichen Ausführen des Backends, um die meisten beliebten Fehler, wie z.B. fehlender Cache-Ordner, fehlende Schreibrechte, falsche Domain, etc. abzufangen. Daher können wir diese Fehler alle erst einmal ausschließen. Stattdessen sehe ich, dass das Backend selber beim Abfragen der Netzwerke hängen bleibt und nach dem Timeout dann “nichts” zurückliefert. D.h. das Problem dürfte bei eben diesen Abfragen liegen, bzw. bei der Kommunikation mit den Diensten. Da das Problem mit allen Diensten auftritt, sind Netzwerk spezifische Fehler auch erst einmal außen vor. Mir fallen aus Erfahrung zwei Möglichkeiten spontan ein, die wir abklopfen sollten.

    1) “Schutz”-Maßnahmen in der .htaccess oder ähnliches. Habt ihr in eurer .htaccess oder an anderer Stelle spezielle Maßnahme getroffen, um z.B. Hotlinking oder andere Aufrufe zu verbieten?

    2) Mein Favorit: Falsche curl-Konfiguration des Webservers bzw. veraltete Zertifikate. Ihr scheint, wenn ich eure Webseite so sehe, technisch bewandert zu sein, daher die Kurzfassung: Das Backend von Heise verwendet das Zendframework und darin wird zum Abfragen der Zählerstände bei den Netzwerken curl genutzt und das natürlich über https. Da curl selbstverständlich die Zertifikate checkt, kann eine veraltete oder fehlende Konfiguration hier Probleme bereiten. Da ihr wie ich sehe euren eigenen Webserver betreibt, checkt bitte einmal die php.ini, ob die curl Einstellung curl.cainfo für das cacert.pem korrekt gesetzt ist. Die Einstellung geht nämlich gerne einmal verloren, wenn man PHP aktualisiert (besonders häufig beim Update auf 5.6). Sollte gar kein cacert.pem existieren, bekommt man unter http://curl.haxx.se/ca/cacert.pem das aktuelle, welches im gleichen Ordner abgespeichert werden sollte und dann entsprechend die Einstellung in der php.ini vorgenommen werden muss. Sollte alles bereits korrekt gesetzt sein, empfiehlt es sich trotzdem das cacert.pem einmal zu aktualisieren. Im Anschluss alles einmal recyceln und dann können wir schauen, ob es nun funktioniert.

    Zum Testen braucht ihr die Statistik gar nicht aktivieren, ihr könnt einfach das Backend direkt aufrufen und gucken, was passiert. Derzeit nicht fiel. Es dauert bis zum Timeout und dann kommt nur unser Hinweis auf eine eventuell falsche Domain und eine leere Message, d.h. das Backend hat nichts geliefert.

    https://blog.universum.com/wp-content/plugins/shariff/backend/index.php?url=https://blog.universum.com

    Solltet ihr alles durch haben und es geht immer noch nicht, so schaut doch bitte einmal in das PHP-Error-Log des Server und sucht nach Hinweisen auf SSL-Fehler, Verbindungsprobleme mit den sozialen Netzwerken und alles in Bezug auf Pfade à la /wp-content/plugins/shariff/backend/.

    Viele Grüße,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hallo JP,

    sry das ich jetzt erst schreibe aber am Wochenende und Freitags bin ich nicht im Büro :D.

    Danke einmal für deine ausführliche anwort und der anaylse von Fehlern, wir werden mal schauen ob wir damit was anfangen können bzw ich habe schon eine leichte Vermutung was der Fehler sein könnte. Das muss ich mal mit meinen Admins besprechen.

    Vielen Danke schonmal und ich halte dich auf dem laufenden und sag dir dann was der Fehler war.

    Grüße
    shogathu

    Thread Starter Torsten Händler

    (@shogathu)

    Hallo JP,

    so nun habe ich ein bißchen getestet und mit den Admins geredet und wir haben verschiedene Möglichkeiten probiert.
    Leider ohne Erfolg. Aktuellste curl.perm ist drauf und aktiviert, Server neugestartet, kein erfolg.
    Auf einer Dev getestet ohne SSL mit den gleichen Einstellungen. Ohne Erfolg.
    einfach mal Probiert nur den Info bzw nur den twitter Button anzeigen zu lassen allerdings immernoch Fehler im backend.
    habe mir mal den shariff4uu_cache ordner angeschaut und er legt dort auch was an, aber wenn ich da reinschaue dann weiterhin [] also keine URL drin die er speichert.

    Ich werde das nochmal bei mir auf nem 1und1 server privat testen. Wir finden das alles sehr komisch, warum sich die Seite aufhängt bzw nichts zurück gibt.

    habe mich mal ans debuggen gemacht und bekomme wenn ich wp_remot_get( $backup_testurl) aufrufe und mir die ausgeben lasse
    schon folgenden Fehler
    object(WP_Error)#4469 (2) { [“errors”]=> array(1) { [“http_request_failed”]=> array(1) { [0]=> string(65) “Operation timed out after 5001 milliseconds with 0 bytes received” } } [“error_data”]=> array(0)
    { } }

    heisst er kommt ja nichtmal bis dahin, die $backup_testurl erstellt er problemlos.

    Gibt es spezielle Settings die ich setzen muss im backend?

    Grüße
    Shogathu

    Plugin Author Jan-Peter

    (@starguide)

    Also das Backend von Heise läuft völlig seperat von dem WordPress-Plugin. Welche Dienste du dir anzeigen lässt, spielt keine Rolle. Es gibt nur wenige Parameter die an das Backend übergeben werden, wie z.B. die URL und falls eingerichtet z.B. die Facebook-Credentials. Dass er im cache-Ordner was anlegt ist klar, aber eben ohne Inhalt, weil er keine Zahlen zum Speichern erhält. Ansonsten würde zwischen den [] die Share-Counts stehen.

    Aus deinen Fehlermeldungen lese ich nur heraus, dass der Server keine Verbindung herstellen kann und nach dem Timeout abbricht. Da es keine Fehlermeldung gibt, kommen wir da auch nicht wirklich weiter.

    Welche PHP-Version nutzt ihr?

    Könnt ihr mal generell mit einem eigenen kleinen PHP-Skript testen, ob ihr mit curl eine Verbindung zu einem anderen Server aufbauen könnt?

    Beispiel-Skript zum Testen von curl findet ihr z.B. hier: http://www.nextscripts.com/tutorials/how-to-check-if-curlssl-is-working-properly/

    Gruß,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hi, Danke für die schnelle Antwort.

    Das Programm läuft nicht sauber bzw das Curlscript funktioniert auf meinem Dev nicht so wie es soll. Ich habe das mal eingestellt und bekomme immer time out Fehler bzw. Failed to connect to 2a04:f540:1::b93f:930a: Network is unreachableArray

    Das ist auf meinem Dev. Auf dem blog.universum.com muss ich noch testen.

    Auf meinem privaten Server funktioniert es ohne Probleme, das scheint dann wohl irgend ein Curl Problem zu sein. Die Firewall sollte das ja nicht blocken oder? Könnte es an einem Proxy-Server liegen?

    Gruß
    Shogathu

    Plugin Author Jan-Peter

    (@starguide)

    Hi,

    also es handelt sich dann definitiv um ein generelles Problem des Webservers. Entweder ist etwas an der curl-Konfiguration falsch oder es ist eine Firewall / Proxy der da blockt. So oder so: Das ist was für euren Server- respektive Netzwerk-Admin. Ich fände es zwar ungewöhnlich, wenn man ausgehende Verbindungen über 443 blocken würde in der Firewall, aber ich kenne unsere Admins und da würde mich auch das nicht wundern.

    Was mir gerade noch auffällt ist, dass es u.U. ein IPv6-Problem sein könnte. Denn laut der Fehlermeldung versucht curl die IPv6-Adresse zu verwenden, obwohl euer Webserver gar nicht über IPv6 erreichbar ist. Kann es sein, dass auf eurem Server IPv6 installiert ist, obwohl er keine Möglichkeit hat darüber nach draußen zu kommen?

    Viele Grüße,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hi,
    ich hab das problem nun gefunden. Das Modul unterstützt zwar Curl allerdings nutzt Curl nicht den http Proxy welcher in der wp-config eingestellt ist,
    dementsprechen wurde das einfach vom proxy geblockt. Nach langem suchen habe ich nun in der shariff/backend/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php

    in den Options den Proxy fest eingetragen.

    private function getDefaultOptions(array $request, array &$headers)
    {
    $url = Core::url($request);
    $startingResponse = false;

    $options = [
    ‘_headers’ => $request[‘headers’],
    CURLOPT_PROXY => ‘proxy:port’,
    .
    .
    .
    .

    danach funktioniert nun das Plugin.

    Danke für die Hilfe und die Hinweise woran das liegen konnte, vielleicht kannst du das ja irgendwie ins Module einbauen das der Proxy aus der wp-config genommen wird 😉

    Viele Grüße
    Shogathu

    Plugin Author Jan-Peter

    (@starguide)

    Hey,

    danke für die Rückmeldung und schön, dass es nun endlich funktioniert. Da das Backend von Heise direkt entwickelt wird und nicht von uns, denken die natürlich nicht an solche Besonderheiten, wie ein in WordPress hinterlegte Proxy für curl. Ich werde einmal schauen, ob wir das irgendwie mit übergeben können, bis dahin müsstest du daran denken, dass du die Veränderung nach jedem Update des Plugins neu durchführen musst.

    Viele Grüße,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hi ne Lösung dafür habe ich schon gefunden nach schnellem testen und es funktinoniert auch.

    man müsste nur
    CURLOPT_PROXY => WP_PROXY_HOST,
    CURLOPT_PROXYPORT => WP_PROXY_PORT,

    setzen, allerdings müsste ich noch testen was passiert wenn ein proxy nicht vergeben ist. ob dann standartwerte genommen werden, aber da schau ich dann mal.

    Das mit dem anpassen der Änderung nach einem Update dachte ich mir schon fast.

    Viele Grüße
    Shogathu

    Plugin Author Jan-Peter

    (@starguide)

    Hallo shogathu,

    dank deiner Vorarbeit konnte ich in das Release 2.4.0 die Funktion aufnehmen, dass er die Proxy-Einstellungen aus der wp-config.php, sofern gesetzt, für die Abfrage der Share-Counts nimmt.

    Damit sollte der Shariff Wrapper nun hoffentlich ohne Änderungen deinerseits bei euch funktionieren. Lass mich doch kurz wissen, ob es funktioniert.

    Viele Grüße,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hallo die Änderung und das hinzufügen in der backend/index.php hat nichts gebracht sondern erzeugt bei eingeschaltetem proxy folgenden fehler.

    Fehler im Backend.
    Warning: array_map(): An error occurred while invoking the map callback in /var/www/meinordner/wp-content/plugins/shariff/backend/src/Backend/BackendManager.php on line 90 Fatal error: Uncaught exception ‘InvalidArgumentException’ with message ‘No method can handle the curl config key’ in /var/www/meinordner/wp-content/plugins/shariff/backend/vendor/guzzlehttp/guzzle/src/Message/MessageFactory.php:360 Stack trace: #0 /var/www/meinordner/wp-content/plugins/shariff/backend/vendor/guzzlehttp/guzzle/src/Message/MessageFactory.php(98): GuzzleHttp\Message\MessageFactory->applyOptions(Object(GuzzleHttp\Message\Request), Array) #1 /var/www/meinordner/wp-content/plugins/shariff/backend/vendor/guzzlehttp/guzzle/src/Client.php(187): GuzzleHttp\Message\MessageFactory->createRequest(‘POST’, ‘https://clients…’, Array) #2 /var/www/meinordner/wp-content/plugins/shariff/backend/src/Backend/Request.php(43): GuzzleHttp\Client->createRequest(‘POST’, ‘https://clients…’, Array) #3 /var/www/meinordner/wp-content/plugins/shariff/backend/src/Backend/GooglePlus.php(42): Heise\Shariff\Backend\Request->createRequest(‘https://clients…’, ‘POST’, Array) #4 /var/www/blog.unive in /var/www/meinordner/wp-content/plugins/shariff/backend/vendor/guzzlehttp/guzzle/src/Message/MessageFactory.php on line 360

    Ich weiss nun nicht in wie weit Ihr Rechte habt um sachen im Plugin oder die Vorgabe von Heise.de zu ändern. aber die Abfrage die Ihr eingefügt habt, stimmt fast, ist meines erachtens nur an der Falschen stelle ich habe diese einmal auskommentiert und in der shariff/backend/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php
    nach
    if (defined(‘CURLOPT_PROTOCOLS’)) {
    $options[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
    }

    folgendes eingefügt.

    if ( defined( ‘WP_PROXY_HOST’ ) && defined( ‘WP_PROXY_PORT’ ) ) {
    $options[CURLOPT_PROXY] = WP_PROXY_HOST;
    $options[CURLOPT_PROXYPORT] = WP_PROXY_PORT;
    }

    Ist fast das Gleiche wie bei euch nur an einer anderen Stelle und da funktioniert es nun, wenn Proxy aktiviert ist, denn das $options array wird dann erweitert.

    Sry wenn ich dich damit nerve, aber bei uns läuft halt alles über proxys ;).

    Viele Grüße
    Shogathu

    Plugin Author Jan-Peter

    (@starguide)

    Hallo Shogathu,

    ich würde es schon gerne in der index.php lassen, da sonst das Updaten von ZendCache und Guzzle zur Qual wird, wenn man dort direkt drin rumpfuscht und prinzipiell lassen sich ja Optionen an Guzzle übergeben.

    Könntest du bitte einmal folgendes in der ../shariff/backend/index.php testen:

    // use proxy if set in wp_config.php
    if ( defined( 'WP_PROXY_HOST' ) && defined( 'WP_PROXY_PORT' ) ) {
        $proxy = WP_PROXY_HOST . ':' . WP_PROXY_PORT;
        $tmp["client"]["proxy"] = $proxy;
    }

    Viele Grüße,
    JP

    Thread Starter Torsten Händler

    (@shogathu)

    Hallo JP,

    das versteh ich das man da nicht soviel rumpfuschen will.

    Ich habe das von die beschriebene in die index.php eingebaut und dies klappt. Habe zu Testzwecken meins aus der CurlFactory.php deaktiviert und das in der index.php aktiviert und dies klappt. Habe ebenfalls mal meinen Proxy in der wp-config ausgeschaltet und bekomme dann ein Fehler, was auch Richtig ist da ich nur über den Proxy nach außen connecten kann.

    Danke für die Hilfe.

    Grüße
    Torsten

    Plugin Author Jan-Peter

    (@starguide)

    Hallo Torsten,

    wunderbar, danke fürs Testen. Dann werde ich das in das nächste Update mit aufnehmen.

    Viele Grüße,
    JP

Viewing 14 replies - 1 through 14 (of 14 total)

The topic ‘Fehler im Backend’ is closed to new replies.