• Welcome to WebsiteBaker Community Forum. Please log in or sign up.
Welcome, Guest
News
Support WebsiteBaker
Your donations will help to:
PayPal
  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!
You can donate by clicking on the button below.

Fehlermeldung wbstats/class.count.php on line 303

Started by gba, August 30, 2025, 09:07:47 PM  ( Read 11,631 times )

gba

Ich bekomme seit heute folgende Fehlermeldung statt der Homepage:

There was an uncatched exception
database::escapeString(): Argument #1 ($unescaped_string) must be of type string, null given, called in /pages/68/d0/d0013785/home/htdocs/wb/modules/wbstats/class.count.php on line 303
in line (259) of (/framework/class.database.php):

Auslöser scheint das Statistik-Modul zu sein.

Anmeldung im Backend ist möglich. Ich habe die Seite jetzt erst mal in den Wartungszustand versetzt.

Ich habe momentan die Version 2.13.6 r237 in Benutzung.
Die Visitor Statistik ist Version 0.2.5.5, im Backend läuft die richtig.

Was ist da los, bzw. wie kann ich das reparieren?

    gba

    Ich glaube ich hatte so eine Meldung vor einigen Jahren schon einmal.

      dbs

      #2
      Hi, du kannst mal die angehängte Version probieren. Darin hatte ich in class.count.php zeile 303 etwas gefixt.
      Ist aber schon ein Jahr her. Ob es dein Problem löst weiß ich nicht.

      siehe unten

        Gast

        Ursache ist ein nicht angekommender Wert, in diesem Fall aus den Besucher-Informationen. Die werden ja nicht in jedem Fall vollständig übertragen und müssen das auch nicht.

        Da es wahrscheinlich ist, das solche Fehler öfter vorkommen, dröseln wir es mal auf

        Die Fehlermeldung:
        Quotedatabase::escapeString(): Argument #1 ($unescaped_string) must be of type string, null given, called in /pages/68/d0/d0013785/home/htdocs/wb/modules/wbstats/class.count.php on line 303
        in line (259) of (/framework/class.database.php):

        Mit einfachen Worten übersetzt: Erwartet wird in diesem Fall ein String, also eine Zeichenkette mit Text, der Wert wurde aber garnicht übergeben (null given)
        Danach folgen Datei und Zeilennummer

        Die Originalzeile dort:
        $city = $database->escapeString($this->getCountryCode());

        Der Auftrag dort: Überprüfe den erwarteten String ($this->getCountryCode()) und escape ihn. Escapen wäre ein üblicher Vorgang zur Maskierung, z.b. von Hochkommas im Text
        Da der Text aber garnicht da ist, gibt es nichts zu escapen, daher die Fehlermeldung.

        Eine übliche Vorgehensweise wäre nun diese Änderung in Z 303 der genannten Datei
        $city = $database->escapeString($this->getCountryCode() ?? '');

        nennt sich: Null Coalescing Operator
        Geprüft wird der Inhalt des Strings. Ist er nicht Null, wird er so verwendet. Ist er null, wird der Wert innerhalb der beiden Hochkommas  hinter den Fragezeichen verwendet, in diesem Fall also ein leerer String, so, wie es das Script erfordert. NULL wäre nichts, so ist es aber etwas Leeres. Im exakten Beispiel der Fehlermeldung würde es heißen: "der CountryCode wurde nicht übermittelt, schreibt rein: er ist leer / keine Angabe

        Nun sind solche Dinge seit PHP 8 immer strenger und werden es auch von jeder PHP-Version zur nächsten, auch mit PHP 8.5 ab Dezember 2025
        Es liegt also nahe, das diese Fehler vermehrt auftreten werden
        Wir haben uns daher entschlossen, auch in Rücksprache mit Ruud, dem Entwickler von wbstats, das Problem "eine Etage höher" anzugehen, in der class.database.php, die diesen Vorgang initiiert. Dort werden jetzt alle NULL-Einträge abgefangen

        Heißt in der Summe: für deine Problematik ergeben sich 3 Möglichkeiten zur Korrektur

        1.: ein Update der WebsiteBaker-Version. Das wäre in 2min erledigt. Da du schon eine recht neue Version benutzt, rechne ich nicht mit großen Problemen
        2.: die entsprechende Zeile wie oben angegeben reparieren, allerdings kann es beim nächsten fehlenden Wert erneut auftreten
        3.: für die kurzzeitige Abhilfe wäre es praktischer gewesen, nur die Einbindung von wbstats zu unterbinden, das wäre eine Zeile wie diese in der index.php deines Frontend-Templates, die man entsprechend auskommentieren müßte bis zur Reparatur
        if (is_readable(WB_PATH.'/modules/wbstats/count.php')){include (WB_PATH.'/modules/wbstats/count.php');}
        Erscheint mir besser zu sein als der Wartungsmodus, ich verstehe aber auch, wenn sich ungeübte User da nicht ran trauen



          gba

          @ sternchen8875
          So steht es in meiner index.php des Templates. Wieso das seit gestern nicht mehr ging weiß ich nicht.

          @ dbs
          Habe die bisherige Version 2.5.5 deinstalliert und die 2.5.6 installiert. Jetzt läuft es wieder.

          Ich habe leider nur geringe php-Kenntnisse, deshalb kann ich nicht viel beitragen.

          Vielen Dank für eure Hilfe  (Y)

            Gast

            Na schrieb ich doch:
            Nehmen wir an, ich besuche deine Webseite. Üblicherweise übermittelt mein Browser diverse Daten wie IP-Adresse, CountryCode usw. Das kann ich aber auch unterbinden. Surfe ich über VPN, wird mein CountryCode verschleiert, Ähnlich bei Tor-Browsern. Aber es muß nicht mal die Absicht dahinterstecken, anonym zu bleiben. Die Übermittlung solcher Daten ist optional, keine Pflicht. Pflicht wäre meine IP-Adresse. Sende ich keinen CountryCode, ist es übliche Praxis, diesen CountryCode aus der IP des Besuchers zu ziehen. Ob das Teil von WbStats ist, mußt du Ruud fragen.

            Ist für das System kein solcher CountryCode vorhanden, wirft es genau diesen Fehler. Das Gleiche gilt dann auch für andere Werte wie Browser, Sprache usw.

            Was nun genau Ursache ist, das in deinem Fall Fehler geworfen wurde, läßt sich nicht mehr sagen, da der Eintrag einen neuen Besuchers auf Grund des Fehlers nicht statt gefunden hat. Klar ist, es fehlte dieser Ländercode

              dbs

              #6
              Für alle, denen im Reiter Logbuch plötzlich viele Orte nicht mehr angezeigt werden, ist die angehängte Version wbstats 2.5.7 zum Testen.
              Es wir nicht mehr geoplugin.net verwendet, sondern ip-api.com, welche weiter ohne API Key arbeitet.

              siehe unten


                hgs

                Hallo Ruud
                in der Version 0.2.5.8 kommt es unter php8.5 zu folgender Fehlermeldung im ErrorLog von WB 2.13.9
                Fri, 06 Feb 2026 11:37:16 +0000 [E_DEPRECATED] /modules/wbstats/class.count.php:[380]  from /modules/wbstats/class.count.php:[323] counter->getUrlContent "Function curl_close() is deprecated since 8.5, as it has no effect since PHP 8.0""
                Gibt es eine Lösung dafür?

                Translate
                Hallo Ruud,
                in versie 0.2.5.8 verschijnt onder php8.5 de volgende foutmelding in het ErrorLog van WB 2.13.9
                Is er een oplossing voor?


                  LG Harald

                  "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

                  "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

                  Gast

                  Quote from: hgs on February 06, 2026, 12:48:20 PM
                  Fri, 06 Feb 2026 11:37:16 +0000 [E_DEPRECATED] /modules/wbstats/class.count.php:[380]  from /modules/wbstats/class.count.php:[323] counter->getUrlContent "Function curl_close() is deprecated since 8.5, as it has no effect since PHP 8.0""
                  Gibt es eine Lösung dafür?

                  Ja, besagte Zeile in  /modules/wbstats/class.count.php:[380] einfach entfernen oder auskommentieren.

                  curl_close($ch);

                    hgs

                    Hallo Ruud
                    wegen zwei Sicherheitslücken haben wir eine WebsiteBaker 2.13.10 herausgebracht und fangen die gemeldeten Lücken unter anderem mit einem CodeGuard ab.
                    Beim Versuch wbstats_v0.2.5.9.zip zu installieren, kommt es zu dieser Fehlermeldung vom CodeGuard:

                    [327] CodeGuard hat diese Aktion aus Sicherheitsgruenden gestoppt.CodeGuard-ID: CG-20260823-171448-AFDEArchiv: Nicht erlaubte Dateiendung .db in js/Thumbs.db
                    Kannst du damit was anfangen und ggf. fixen, Danke





                    Hallo Ruud,
                    vanwege twee beveiligingslekken hebben we WebsiteBaker 2.13.10 uitgebracht en pakken we de gemelde lekken onder andere aan met CodeGuard.
                    Bij een poging om wbstats_v0.2.5.9.zip te installeren, verschijnt deze foutmelding van CodeGuard:


                    Kun je hier iets mee doen en het eventueel oplossen? Bedankt.
                      LG Harald

                      "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

                      "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

                      hgs


                      Ich habe mich mal ein wenig mit den Meldungen von CodeGuard beschäftigt, diese haben mich zu zwei Problemen geführt.


                      1. Problem war die Datei Thumbs.db im Verzeichnis /js
                      Fehlermeldung war ja
                      ....Nicht erlaubte Dateiendung .db in js/Thumbs.db


                      Nachdem die Datei Thumbs.db gelöscht wurde, wurde das 2. Problem mit der nachfolgenden Fehlermeldung sichtbar.


                      Die Fehlermeldung lautete:


                      24-08-2026 20:05 SEC-20260824-180531-2205 module file_scan blocked class.count.php :: Variable function call is forbidden: $find()


                      Die Ki hat dann den Code von class.count.php umgestalltet und damit ließ sich das Modul fehlerfrei installieren.


                      Die geänderte Datei ist als class.count.php.zip angehängt.
                      Die Änderungen fangen bei zn 953 an und gehen bis zum Ende.
                        LG Harald

                        "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

                        "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

                        RicoG

                        Hallo hgs,

                        ich habe das selbe Problem wie du, die Thumbs.db habe ich ebenfalls gelösscht und dann kam der Folgefehler.
                        Nach dem Versuch deine class.count.php runterzuladen, musste ich feststellen, dass dieses Archiv beschädigt ist.
                        Kannst du mir dieses noch einmal schicken oder erneut hochladen?
                        Würde dies gern testen.

                        Grüße Rico

                          hgs

                          LG Harald

                          "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

                          "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

                          \n\n